雑記
最終出社!
ALBAWSAWS BatchAWS Certificate ManagerAWS CodebuildAWS CodepipelineAWS ECRAWS ECSAWS LambdaCloudFrontCloudSearchCloudWatchCloudWatch LogsData pipelineDynamoDBEC2ElastiCacheIAMKinesisRDS Aurora For MySQLRoute 53S3SQSVPC

今日11/9が現職での最終出社でした。
12/1まで在職となります。

  • AWSでインフラ構築
  • Docker+PHPでAPI開発
  • Swiftでちょっとアプリの機能を実装

AWSだけなら、これだけ使いました。
職務経歴書に載せてるから、まあ大丈夫でしょう。

  • EC2
  • S3
  • RDS Aurora For MySQL
  • ElastiCache
  • IAM
  • ALB
  • VPC
  • AWS Lambda
  • CloudWatch
  • CloudWatch Logs
  • CloudFront
  • CloudSearch
  • AWS Certificate Manager
  • SQS
  • Kinesis
  • Route 53
  • AWS Codebuild
  • AWS Codepipeline
  • AWS ECS
  • AWS ECR
  • AWS Batch
  • DynamoDB
  • Data pipeline

まだ、あったかどうかは思い出せないです。(汗)

トータルで7ヶ月でしたが、次に向かいます!!!

Terraform
Terraformにおけるaws_iam_policy_attachmentのTIPS
AWSIAMTerraform

resource aws_iam_policy_attachmentは曲者

作業中に引っかかってしまい、せっかくなので書き記しておきます。
やろうとしたことは、自分で作成したIAMロール「ecs_role」に

AdministratorAccess

をアタッチしようと、tfファイルを定義しました。

resource "aws_iam_role" "ecs_role" {
  name = "${terraform.env}_ecs_role"
  path = "/"
   << 以下は省略 >>
}

resource "aws_iam_policy_attachment" "ecs_role_manag_attach" {
  depends_on = ["aws_iam_role.ecs_role"]
  name       = "ecs_role_manag_attach"
  roles      = ["${aws_iam_role.ecs_role.name}"]
  groups     = ["infra", "developer"]
  policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
}

terraform applyを実行すると反映されます。

terraform destroyすると

groups     = ["infra", "developer"]

があるため、IAMグループinfra, developerに含めた
IAMユーザーの権限も外されて、影響を受けてしまいました。

対処方法は、aws_iam_role_policy_attachmentを使用する

resource "aws_iam_role_policy_attachment" "ecs_role_manag_attach" {
  depends_on = ["aws_iam_role.ecs_role"]
  role       = "${aws_iam_role.ecs_role.name}"
  policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
}

とすることで、ロールに対してポリシーがアタッチされます。

おまけ:ポリシーのarnを取得するAWS CLI

こちらのAWS CLIで取得できます。

$ aws iam list-policies --query "Policies[][Arn]" --output text

AWSのポリシーは、下記のパターンになります。
私はgrepとパイプでつなげて、抽出して使用してます。

  • arn:aws:iam::aws:policy/XXXXXXXXXXXXX
  • arn:aws:iam::aws:policy/service-role/XXXXXXXXXXXXX