👌
MacにSAM CLIをインストールして実行する
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スタックを作ることができました。
こちらの記事を参考にさせていただきました。ありがとうございます。
おしまい。
Discussion