LoginSignup
6
2

More than 1 year has passed since last update.

【備忘録】JAWS DAYS ハンズオンコーナー「コンテナサービスをCI/CDパイプラインでデプロイしよう」をやってみての気づき・学び

Posted at

JAWS-UG の最大のイベントである JAWS DAYS 2022 ではハンズオンも開催されており、3種類のハンズオンがありました

その中でも個人的に一番気になっていたのが「コンテナサービスをCI/CDパイプラインでデプロイしよう」です

私は今回ボランティアスタッフとして参加したため、イベントの次の日を丸一日使ってハンズオンをやりました

内容や構成を理解することを重視してハンズオンを進めましたが、これがかなり濃密なハンズオンなのです
私にアプリケーション開発の経験がないことも相まってかなり大変でした・・・
ただ、非常に勉強になったため学びを残しておこうと思います

タグの付け方によってコマンドの形態が違う

まず前提として、CLI でのタグ付け操作の方法は以下の2パターンによって異なります

  • リソース作成時にタグも一緒に作る
  • 既存のリソースへにタグを追加する

ハンズオンでは「リソース作成時にタグを一緒に作る」手順を踏んでいましたが、コマンド形態に注意が必要だと思いました

具体的にそう思ったのは以下の点です

  • オプションには、--tags ではなく --tag-specifications を使う
  • タグの Key-Value 以外に ResourceType=xxxx も指定する必要がある

例えば、EBS volume 作成時は以下のようなコマンドになります

リソース作成時にタグも一緒に作る
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=purpose,Value=production},{Key=cost-center,Value=cc123}]'

対して、AMI にタグを後付けする場合は以下のようなコマンドになります

既存のリソースへにタグを追加する
aws ec2 create-tags \
    --resources ami-78a54011 \
    --tags Key=Stack,Value=production

ログインしているIAMユーザーとは別に、cloud9にはAWS Managed Temporary Credentialsというポリシーがついている

ハンズオンの中に、cloud9のクレデンシャル情報を編集する手順が出てきました
image.png
(画像はハンズオンシナリオから引用しています)

この AWS Managed Temporary Credentials(長いので、以下 AMTC と略します)は cloud9 を作成したときに自動的に作成されるクレデンシャルです
コンソルにログインしている IAM ユーザーが持っている権限と AMTC、両方で許可されていないと AWS リソースに対するコマンドは実行できません

ただ注意点が一つあり、一部制約はあるものの AMTC は Administrator に近い権限を保有しています

ゆえに、セキュリティを考えると AMTC はハンズオンシナリオの通り無効化し、cloud9 のインスタンスに適切な権限を与えた IAM ロールをアタッチすることがベストプラクティスと思われます

ちなみに、CLI 専門支部で使っている cloud9 を確認したら、同じく AMTC はオフになっていました
設定したことを完全に忘れていました。。。

AWS CLI で ECR にログインする時のベストプラクティス

ハンズオンシナリオで ECR にログインする手順があるのですが、ちょっと一工夫加えたコマンドでした

aws ecr get-login-password \
  --region ap-northeast-1 | \
  docker login \
  --username AWS \
  --password-stdin `echo ${AccountID}`.dkr.ecr.ap-northeast-1.amazonaws.com

調べてみると、標準出力にパスワードを表示させないために工夫されたコマンドでした

ざっと説明すると、docker login コマンドには --password-stdin というオプションがあります
これはパスワードを標準出力に表示させず、ファイルなどからパスワードを取得するためのオプションです

ハンズオンでは ecr get-login-password コマンドでパスワードを取得し、パイプで docker login コマンドにパスワードを渡しています
こうすることで、標準出力にパスワードを表示させずに済みます

ECR の VPC エンドポイント作る時は、3種類のエンドポイントが必要

プライベートサブネットなどから ECR リポジトリにアクセスするためには、以下の3種類の VCP エンドポイントが必要です

  • com.amazonaws..ecr.dkr
  • com.amazonaws..ecr.api
  • com.amazonaws..s3(ゲートウェイ型)

ECR のエンドポイントは dkrapi の2種類が必要なこと、S3のゲートウェイ型エンドポイントも必要なこと、このあたりで引っかかりそうだと思いました

最後に

AWS CLI、コンテナ、CI/CDパイプライン、Blue/Green デプロイ、このあたりの単語が「完全に理解した」状態な方にとって、理解を深めるのにうってつけのハンズオンだと思いました

この記事が誰かの助けになれば幸いです

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2