https://qiita.com/hyj624117615/items/ca4a8bc8c269098aaeef
作業端末: macOS 12.4
-- 1. 準備作業【AWS】
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
which aws
aws --version
-- 2. 準備作業【GCP】
curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-401.0.0-darwin-x86_64.tar.gz -o google-cloud-cli-401.0.0-darwin-x86_64.tar.gz
tar xvzf google-cloud-cli-401.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh
./google-cloud-sdk/bin/gcloud init
gcloud --version
gcloud init
gcloud auth list
-- 3. プロジェクト、サービスアカウント、VMインスタンスの作成【GCP】
-- 3.1 プロジェクトの作成
gcloud projects list
gcloud projects create project1111111111 \
--name="project1111111111"
gcloud projects describe project1111111111
-- 3.2 プロジェクトを請求先アカウントに紐づける(GUIから実施)
-- 3.3 プロジェクト設定
gcloud config list
gcloud config set project project1111111111
gcloud config list
-- 3.4 Compute Engineの有効化
gcloud services enable compute.googleapis.com
-- 3.5 サービスアカウント作成
gcloud iam service-accounts create sa0001 --display-name="sa0001"
gcloud iam service-accounts list
gcloud iam service-accounts describe sa0001@project1111111111.iam.gserviceaccount.com
gcloud compute instances list
gcloud compute instances create instance-1 \
--project=project1111111111 \
--zone=asia-northeast1-a \
--machine-type=e2-micro \
--network-interface=network-tier=PREMIUM,subnet=default \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--service-account=sa0001@project1111111111.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--create-disk=auto-delete=yes,boot=yes,device-name=instance-1,image=projects/centos-cloud/global/images/centos-7-v20220920,mode=rw,size=20,type=projects/project1111111111/zones/asia-northeast1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any
-- 3.7 ミドルウェア等をVMインスタンスにインストール
※VMインスタンスにログインして実施
gcloud compute ssh --zone "asia-northeast1-a" "instance-1" --project "project1111111111"
sudo yum install -y python3-pip
sudo yum install unzip -y
curl -L -o gcp-to-aws.zip https://github.com/cevoaustralia/gcp-sa-to-aws-iam-role/archive/master.zip
unzip gcp-to-aws.zip
cd gcp-sa-to-aws-iam-role-master/gcp
sudo pip3 install -r requirements.txt
aws --version
cd ~
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 4. ロール作成【AWS】
-- 4.1 ロールの作成
※"accounts.google.com:aud"にはGCPのVMインスタンスに指定したサービスアカウントのuniqueIdを指定する
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "accounts.google.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"accounts.google.com:aud": "222222222222222222222"
}
}
}
]
}
aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json
-- 4.2 ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--role-name role01
-- 5. 動作確認【GCP】
※VMインスタンスにログインして実施
gcloud compute ssh --zone "asia-northeast1-a" "instance-1" --project "project1111111111"
cd ~/gcp-sa-to-aws-iam-role-master/gcp
ll
cat get_aws_creds.py
./get_aws_creds.py arn:aws:iam::999999999999:role/role01
aws sts get-caller-identity
cat ~/.aws/credentials
export AWS_DEFAULT_REGION=ap-northeast-1
aws s3 ls
aws s3 mb s3://bucket123
aws s3 ls
aws s3 rb s3://bucket123 --force
aws s3 ls
-- 6. クリーンアップ【GCP】
-- プロジェクト削除
gcloud projects list
gcloud projects delete project1111111111
-- 7. クリーンアップ【AWS】
-- ロールの削除
aws iam list-roles | grep role01
aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
aws iam delete-role --role-name role01