AWS SAM CLIを使用してFast APIをAWSにデプロイする(Windows10)

スポンサーリンク

AWS SAM CLIを使用してFast APIをAWSにデプロイしてみます(Windows10)

この記事は「AWS SAM CLIを使用してFast APIをローカルでテストする(Windows10)」という記事を公開しましたが、その続きとなります。

■PC環境

>Windows 10

>sam –version
SAM CLI, version 1.52.0

>docker –version
Docker version 20.10.12, build e91ed57

>Python バージョン
Python 3.8.5

AWS SAM CLIを使用してFast APIをAWSにデプロイする

AWS SAM CLIを使用してFast APIをAWSにデプロイしてみますので、Windows10のコマンドプロンプトを起動します。

>cd fastapi-on-lambda

起動後、上記のコマンドを入力し、Enterキーを押します。cdコマンドで「fastapi-on-lambda」ディレクトリに移動します。

>sam deploy --guided

移動後、上記のコマンドを入力し、Enterキーを押します。今回のデプロイは、初回のため、ガイドに従い設定しデプロイを行いますので、「–guided」のオプションを付けています。

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Not found

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [sam-app]: FastAPIOnLambda
        AWS Region [us-east-1]: us-east-1
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy(デプロイするリソースの変更を示し、デプロイを開始するには「Y」が必要です)
        Confirm changes before deploy(デプロイ前に変更点を確認する) [y/N]: y
        #SAM needs permission to be able to create roles to connect to the resources in your template(テンプレート内のリソースに接続するためのロールを作成できるようにするには、SAMに権限が必要です)
        Allow SAM CLI IAM role creation(SAM CLI IAM ロールの作成を許可する) [Y/n]: y
        #Preserves the state of previously provisioned resources when an operation fails(オペレーションが失敗したときに、以前にプロビジョニングされたリソースの状態を保持します。)
        Disable rollback [y/N]: n
        Function may not have authorization defined, Is this okay?(関数に認証が定義されていない可能性がありますが、大丈夫でしょうか?) [y/N]: y
        Save arguments to configuration file(設定ファイルへの引数の保存) [Y/n]: y
        SAM configuration file(SAM設定ファイル) [samconfig.toml]: samconfig.toml
        SAM configuration environment(SAM構成環境) [default]: default

Enterキーを押すと、「Configuring SAM deploy(SAMデプロイの構成)」と出力され、その後、「Looking for config file [samconfig.toml] : Not found」などが出力されます。なお「samconfig.toml」がデプロイの構成が記載されているファイルになりますので、今回の設定後、2回目のデプロイでは、「sam deploy」のコマンドだけでデプロイが行なえます。

構成では「Stack Name」や「AWS Region」などを設定し、質問にはYかnで答えます。

Looking for resources needed for deployment:(展開に必要なリソースを探しています。)

SAM configuration environment(SAM構成環境)まで質問に答えた後に、上記のメッセージが出力されます。

Creating the required resources...(必要なリソースを作成する)
Successfully created!(作成成功)

その後、必要なリソースを作成し、「Successfully created!(作成成功)」と出力されます。これで必要なリソースが完成となります。

         Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-xxyd9xtbcckj
         A different default S3 bucket can be set in samconfig.toml

        Saved arguments to config file
        Running 'sam deploy' for future deployments will use the parameters saved above.
        The above parameters can be changed by modifying samconfig.toml
        Learn more about samconfig.toml syntax at
        https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html

Uploading to FastAPIOnLambda/66b9b5db8d10d9575d544b7619931acf  13055198 / 13055198  (100.00%)

        Deploying with following values
        ===============================
        Stack name                   : FastAPIOnLambda
        Region                       : us-east-1
        Confirm changeset            : True
        Disable rollback             : False
        Deployment s3 bucket         : aws-sam-cli-managed-default-samclisourcebucket-xxyd9xtbcckj
        Capabilities                 : ["CAPABILITY_IAM"]
        Parameter overrides          : {}
        Signing Profiles             : {}

Initiating deployment
=====================
Uploading to FastAPIOnLambda/f59d07830ab3de4702f1a74c08fbc72f.template  824 / 824  (100.00%)

Waiting for changeset to be created..
CloudFormation stack changeset
---------------------------------------------------------------------------------------------------------------------
Operation                     LogicalResourceId             ResourceType                  Replacement
---------------------------------------------------------------------------------------------------------------------
+ Add                         ApiApiGatewayDefaultStage     AWS::ApiGatewayV2::Stage      N/A
+ Add                         Api                           AWS::ApiGatewayV2::Api        N/A
+ Add                         FunctionApiPermission         AWS::Lambda::Permission       N/A
+ Add                         FunctionRole                  AWS::IAM::Role                N/A
+ Add                         Function                      AWS::Lambda::Function         N/A
---------------------------------------------------------------------------------------------------------------------

Changeset created successfully. arn:aws:cloudformation:us-east-1:826876594767:changeSet/samcli-deploy1656127761/92bf7452-326e-460f-ae1c-d248b6566d1f

完成後、作成したスタック「FastAPIOnLambda」へファイルがアップロードされたりして、「Changeset created successfully(チェンジセットが正常に作成されました)」と出力されます。

Previewing CloudFormation changeset before deployment(デプロイ前にCloudFormationのチェンジセットをプレビューする)
======================================================
Deploy this changeset?(このチェンジセットをデプロイしますか?) [y/N]

出力後、「Deploy this changeset?(このチェンジセットをデプロイしますか?)」と質問されますので「y」と入力し、Enterキーを押します。

2022-06-25 12:30:31 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 0.5 seconds)
---------------------------------------------------------------------------------------------------------------------
ResourceStatus                ResourceType                  LogicalResourceId             ResourceStatusReason
---------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS            AWS::IAM::Role                FunctionRole                  -
CREATE_IN_PROGRESS            AWS::IAM::Role                FunctionRole                  Resource creation Initiated
CREATE_COMPLETE               AWS::IAM::Role                FunctionRole                  -
CREATE_IN_PROGRESS            AWS::Lambda::Function         Function                      -
CREATE_IN_PROGRESS            AWS::Lambda::Function         Function                      Resource creation Initiated
CREATE_COMPLETE               AWS::Lambda::Function         Function                      -
CREATE_IN_PROGRESS            AWS::ApiGatewayV2::Api        Api                           -
CREATE_IN_PROGRESS            AWS::ApiGatewayV2::Api        Api                           Resource creation Initiated
CREATE_COMPLETE               AWS::ApiGatewayV2::Api        Api                           -
CREATE_IN_PROGRESS            AWS::ApiGatewayV2::Stage      ApiApiGatewayDefaultStage     -
CREATE_IN_PROGRESS            AWS::Lambda::Permission       FunctionApiPermission         -
CREATE_IN_PROGRESS            AWS::Lambda::Permission       FunctionApiPermission         Resource creation Initiated
CREATE_IN_PROGRESS            AWS::ApiGatewayV2::Stage      ApiApiGatewayDefaultStage     Resource creation Initiated
CREATE_COMPLETE               AWS::ApiGatewayV2::Stage      ApiApiGatewayDefaultStage     -
CREATE_COMPLETE               AWS::Lambda::Permission       FunctionApiPermission         -
CREATE_COMPLETE               AWS::CloudFormation::Stack    FastAPIOnLambda               -
---------------------------------------------------------------------------------------------------------------------
CloudFormation outputs from deployed stack
---------------------------------------------------------------------------------------------------------------------
Outputs
---------------------------------------------------------------------------------------------------------------------
Key                 ApiUrl
Description         URL of your API
Value               https://659wx37y96.execute-api.us-east-1.amazonaws.com/
---------------------------------------------------------------------------------------------------------------------

Successfully created/updated stack - FastAPIOnLambda in us-east-1

Enterキーを押すと、チェンジセットのデプロイが行われ、完了となります。

完了後、「Value https://*******.execute-api.us-east-1.amazonaws.com/」と出力されていますので、このURLをコピーします。

>curl https://*******.execute-api.us-east-1.amazonaws.com/

コピー後、新しくコマンドプロンプトを起動します。起動後、上記のコマンドを入力し、Enterキーを押します。Windows10でcurlが標準で利用できるようになっているので、これを利用し、APIをテストします。

{"message":"hello hello cq"}

Enterキーを押すと、Lambdaを実行しreturnとして返されるメッセージが出力されました。これでAPIのテストとデプロイ後の検証は完了となります。

なお、完了後、AWS マネジメントコンソール上を確認すると、「FastAPILambda」という関数が作られているのと、S3バケットで「aws-sam-cli-managed-default-samclisourcebucket-****」という新しいバケットが作られていることが確認できました。

コメント

タイトルとURLをコピーしました