AWSを初めて使う方に贈る、つまずきポイント集
2019-04-03
azblob://2022/11/11/eyecatch/network.jpg

こんにちは、松枝です。

今回は、Amazon Web Services (以降、AWS と表記) を使用してみて気付いた、AWSを初めて使う方が各サービスを使用する上でつまずきそうなポイントをまとめました。

AWS つまずきポイント

API Gateway の設定変更ができない

EC2 が ECS に登録されない

  • ECS Agent から ECS への通信(HTTPS 443)が拒否されていないか ACL・セキュリティグループの Outbound ルールを確認してください。
  • terraform 等で EC2 を作成している場合、AMI は ECS 用に最適化されたもの(Amazon ECS-Optimized Amazon Linux 2 AMI など)を使用していることを確認してください。

VPC内のインスタンスにインターネットから接続できない

CodeBuild のビルドについての設定方法がわからない

CodeBuild で .Net Core のビルドが失敗する

  • .Net Core 用の Environment を指定してください。

VPC が5つまでしか作れない

  • クォータ上限のため、VPC は1リージョンあたり5つまでしか作成できません。
  • サブネットを活用する、制限の引き上げをリクエストする、などの対応を取りましょう。

.NET Core で作成した Lambda 関数が動かない、時々動かない

  • Lambda のタイムアウト時間のデフォルトは3秒になっており、例えば .NET Core アプリだと起動が間に合わずエラーになります。適宜変更しましょう。

EC2へのSSH接続に失敗する

Terraform つまずきポイント

AWS のリソース作成に Terraform を活用しましたが、その際に気付いたつまずきポイントもまとめてみました。

terraform destroy で S3 バケットが削除できない

  • S3 バケット内にオブジェクトが残っている場合は、Terraform から destroy できません。
  • AWS Console からであれば削除できます。

リソースがすでに存在する...旨のエラーが発生する

  • terraform が作成しようとするリソースがすでに AWS 上に存在することが原因です。
  • terraformは、AWS リソースの AWS 上での ID で管理しているので、これが競合してしまうとエラーになります。
  • AWS 上に存在するリソースを AWS コンソール等から削除することで回避可能です。

tfファイルの記述には問題が無さそうだが、terraform apply でエラーが発生する

  • 依存関係の不足により、先に作成するべきリソースが作られずエラーになっています。
  • 依存関係を depends_on で必ず定義してください。

同じ tf ファイルを複数人で同時に編集すると意図せずリソースが削除される

  • terraform はコードを実行して作成したリソースの情報を tfstate ファイルに記録しています。このため複数人で同一ファイルを用いて環境を調整する場合、tfstate ファイルを何らかの方法で同期する必要があります。

tf ファイル内で json を用いて設定している項目の値が正しく設定されない

  • AWS API Gateway のリソースポリシーのように json で設定している一部の項目ではエスケープ文字(\)が設定されたり、改行コードが削除されたりして、項目への設定が正しく行われない場合があります。
  • json を別ファイルとして読み込むことで問題を回避可能です。

まとめ

上記で記載したことが AWS を初めて使った時につまずきやすいポイントになると思われます。

これから AWS を活用しようとされている皆様のご参考になれば幸いです。