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-****」という新しいバケットが作られていることが確認できました。
コメント