Terraform で扱うファイルに関して

以下が AWS 上に EC2 インスタンスを作成する .tf ファイルの例。

以下は us-west-2 リージョンに t2.micro の EC2 インスタンスを作成する設定。

$ cat main.tf
provider "aws" {
  access_key = "xxx"
  secret_key = "xxx"
  region     = "us-west-2"
}

resource "aws_vpc" "main" {
  cidr_block = "192.168.0.0/16"
  tags = {
    Name = "test"
  }
}

TerraformをAWS SSOのユーザーの権限で実行

AWS CLI v2より、AWS SSOのユーザー(厳密にいうと、そのユーザーが引き受ける各アカウント上のロール)の権限でCLIを使うためのコマンドが追加され,TerraformでもAWS Provider version 3.26よりこの機能がサポートされている。

この機能を使うためには、まずはSSO用のprofileを作成する必要があります。以下の様な形式のprofileを ~/.aws/config に記載

[profile sandbox-noguchi]
sso_start_url = <https://○○○○○○○○○○○○.awsapps.com/start>
sso_region = ap-northeast-1
sso_account_id = △△△△△△△△△△△△△△△△
sso_role_name = AdministratorAccess
region = ap-northeast-1
output = json

続いて、このprofileの一時認証情報を取得。aws sso loginというコマンドを使ってログイン。

$ aws sso login --profile sandbox-noguchi
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

<https://device.sso.ap-northeast-1.amazonaws.com/>

Then enter the code:

CJGF-GKBZ

コンソールに戻ってくるとSuccessully logged into Start URL: (SSOポータルURL)と追記されてコマンド終了します。ここまで来るとSSOのユーザー(が引き受ける各アカウント上のロール)の権限が使えるので、方法2と同様 profile引数を書いてTerraformを実行。

provider "aws" {
  region = "ap-northeast-1"

+  profile = "sandbox-noguchi"
}