.tf
で JSON なら .tf.json
を使用以下が 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"
}
}
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"
}