Linux
久々に、nohupを使ったのでメモしておきます
Shell

nohupとバックグラウンドプロセスを、簡単にまとめると

まとめは2点。

  • nohupは、 SIGHUP に対して影響を受けないようする対処方法
  • & をつけると、バックグラウンドプロセス。

詳しい説明をされていたページがありましたので、こちらを紹介しておきます

使い方

$ nohup {コマンド} 1>out.log 2>error.log &

標準エラー出力で、エラーが出る場合はこちらをいれるとよいです。
2>error.log

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