Skip to content

SAM入門

   

SAM使ったらいい感じにLambdaできそうなので、やってみる。

Installing the AWS SAM CLI - AWS Serverless Application Model からインストーラーをダウンロードして、インストール。

VS Codeのターミナルからsamが実行できない(コマンドプロンプトからだとできる)。

いきなり躓いてやる気が。。

とりあえず、Windows版をアンインストールして、WSL2でLinux版をインストール。

awsコマンドもインストール。 AWS CLI の最新バージョンをインストールまたは更新します。 - AWS Command Line Interface

sam実行

$ sam init --runtime go1.x
$ cd sam-app
$ sam local start-api

http://127.0.0.1:3000/hello にアクセスしてIPアドレスが表示された。OK。

IAMユーザーsamを作成して、aws configure --profile sam でキー設定。

デプロイ

$ sam deploy --guided --profile sam

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

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

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [sam-app]:
        AWS Region [us-east-1]: ap-northeast-1
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [y/N]:
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]:
        #Preserves the state of previously provisioned resources when an operation fails
        Disable rollback [y/N]:
        HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
        Save arguments to configuration file [Y/n]:
        SAM configuration file [samconfig.toml]:
        SAM configuration environment [default]:

        Looking for resources needed for deployment:
        Creating the required resources...
        Successfully created!

出力の中にあるURLにアクセスして、IPアドレスが表示された。

作られたものは、template.yamlを見るとHelloWorldAPIHelloWorldFunctionHelloWorldFunctionIamRoleの3つとこれらをまとめるCloudFormationと、aws-sam-cli-managed-defaultというのがあった。

main.goを編集して、makesam deploy --profile samで更新された。

削除

$ sam delete --profile sam
        Are you sure you want to delete the stack sam-app in the region ap-northeast-1 ? [y/N]: y
        Are you sure you want to delete the folder sam-app in S3 which contains the artifacts? [y/N]: y
        - Deleting S3 object with key sam-app/c76671a85d3c296ac1bd69c32352798f
        - Deleting S3 object with key sam-app/1753ad35ae8d1d0bcddf744d77f7c03f.template
        - Deleting S3 object with key sam-app/59eb8f4eeaf8324a52fd7d8ed8741599
        - Deleting S3 object with key sam-app/a848bcfd2d0f1d832ad1ce31edca1e2f.template
        - Deleting Cloudformation stack sam-app

Deleted successfully

なんかできそうな気がしてきた。