👌

MacにSAM CLIをインストールして実行する

2022/10/07に公開

AWS SAMとは、Serverless Application Modelの略。
sam deployなどのコマンドで、AWS CloudFormationスタックを作成、変更、削除することが可能。インフラをコードで管理することができる。

事前準備

以下をあらかじめインストールしておく。

  • Homebrew
  • AWS CLI
  • Python3.8

Homebrew、AWS CLIはインストール済みの状態から始める。
Python3.8を入れずにSAM CLIをインストールしようとするとエラーになる。

brew tap aws/tap
brew install aws-sam-cli
Error: python@3.8: the bottle needs the Apple Command Line Tools to be installed.

Python3.8のインストール。

brew install --build-from-source python@3.8

またエラー。先にxcode-select --installする必要があった。

Error: The following flag:
  --build-from-source
requires building tools, but none are installed.
Install the Command Line Tools:
  xcode-select --install
 Alternatively, remove the flag to attempt bottle installation.

xcode-select --install

xcode-select --install


やたらと時間がかかる。

インストールOK!

仕切り直してPython3.8を入れる。

brew install --build-from-source python@3.8

Python3.8が入ったのでSAM CLIを入れる。

brew tap aws/tap
brew install aws-sam-cli
sam --version

OK!

SAM CLI, version 1.59.0

SAM CLIが入ったので、用意していたスクリプトを実行。SAMでAWS VPCとかNatGatewayとかを作るスタック。動くかな。(前段で環境変数設定も入れてるけど今回は記載を割愛。)

  sam deploy --profile "${PROFILE}" \
    --region "${REGION}" \
    --template "${REPOSITORY_ROOT_DIR}/templates/${TEMPLATE_FILE}" \
    --stack-name "${STACK_NAME}" \
    --s3-bucket "${CF_TEMPLATE_BUCKET}" \
    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM \
    --no-fail-on-empty-changeset \
    --no-execute-changeset \
    --tags \
        Env="${ENV}" \
    --parameter-overrides \
        Env=${ENV} \
        SubnetName=${SUBNET_NAME} \
        VPCCIDR=${VPCCIDR} \
        NatSubnetCIDRC=${NAT_SUBNET_CIDR_C} \
        NatSubnetCIDRD=${NAT_SUBNET_CIDR_D} \
        SubnetCIDRC=${SUBNET_CIDR_C} \
        SubnetCIDRD=${SUBNET_CIDR_D} \
        NatEIPC=${NAT_EIPC} \
        NatEIPD=${NAT_EIPD} \
        IpThroughNat=${IP_THROUGH_NAT}

動いた!

        Deploying with following values
        ===============================
        Stack name                   : ext-vpc
        Region                       : ap-northeast-1
        Confirm changeset            : False
        Disable rollback             : False
        Deployment s3 bucket         : cf-templates-xxxxxxxxxxxxx-ap-northeast-1
        Capabilities                 : ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
        Parameter overrides          : {"Env": "xx", "SubnetName": "ext", "VPCCIDR": "10.100.0.0/16", "NatSubnetCIDRC": "10.100.0.0/25", "NatSubnetCIDRD": "10.100.0.128/25", "SubnetCIDRC": "10.100.1.0/25", "SubnetCIDRD": "10.100.1.128/25", "NatEIPC": "eipalloc-xxxxxxxxxxxxxxxx", "NatEIPD": "eipalloc-xxxxxxxxxxxxxxxx", "IpThroughNat": "xx.xx.xx.xx/xx"}
        Signing Profiles             : {}

SAM CLIのインストールと実行で、AWSのCloudFormationスタックを作ることができました。

こちらの記事を参考にさせていただきました。ありがとうございます。
https://zenn.dev/takaha4k/scraps/f32880c05b39f9

おしまい。

Discussion