Posts

AWS ルートユーザに設定されている MFA が不明な場合のログイン方法

  • POST
AWS ルートユーザに設定されている MFA が不明な場合のログイン方法を備忘録として残しておく 状況 ルートユーザ メールアドレス: 把握 パスワード: 不明 MFA: 故障 or 紛失 実際の手順 公式の手順 を参考に行う 事前作業 公式の手順 を参考に行う IAM ユーザ認証情報を使用して、更新対象の AWS アカウントにログイン AWS Billing and Cost Management > Account を選択 [Contact Information] の横にある [Edit]を選択 アカウントに関連付けられている電話番号を更新 ※電話番号の国コードが正しく、余分なスペースが含まれていないことを確認 [Update]を選択 作業手順 AWS アカウントのルートユーザーの E メールアドレスを使用してサインインする [Root user sign in]ページで、ルートアカウントのパスワードを入力する [Amazon Web Services Sign In With Authentication Device]ページで、[Troubleshoot MFA? Click here] を選択 [Troubleshoot Your Authentication Device] ページで、[Sign In using alternative factors]を選択 [Step 1: Email address verification]で、メールアドレスが正しいことを検証し、[Send verification email]を選択 件名が「AWS Email Verification」である AWS からの E メールで、[Verify your email address]を選択 => 検証プロセスの「ステップ 2」ページが表示 [Step 2: Phone number verification]で、表示されている電話番号が正しいことを確認し、[Call me now]を選択 AWS からの電話に応答し、電話のキーパッドを使用して、デバイスの画面に表示される 6 桁の検証コードを送信 [Step 3: Sign In]で、[Sign in to the console]を選択 => [Security Credentials]に自動的にリダイレクトされる リセットする MFA デバイスの横にある [Deactivate]を選択 [Activate MFA] を選択して MFA デバイスを追加

ShellScript で MFA 認証設定済の IAM を使用して S3 に画像をアップロードする方法

  • POST
ShellScript で MFA 認証設定済の IAM を使用して S3 に画像をアップロードする方法について調査した結果を備忘録として残しておく 環境 OS: MacOS aws-mfa をインストールして登録済 aws-mfa 設定を参照 aws-mfa 設定 通常の aws profile を設定 1 で設定した «profile 名»-long-term で Profile を設定 追加で ~/.aws/credentials に以下を設定 [<<profile 名>>-long-term] aws_mfa_device = <<arn:aws:iam::*:mfa/${aws:username}>> フォルダ構成 ./ ├── img/ │ └── image_001.png └── upload_image.sh 実際のコード <<AWS Profile Prefix>> 部分は実際の環境に応じて書き換える #!/bin/sh # Shared AWS_PROFILE_PREFIX=<<AWS Profile Prefix>> IMAGE_UPLOAD_DIR=img read -p "Which environment connect to? (dev/stg/prd): " input_environment # Convert to uppercase environment=$(echo "${input_environment}" | tr '[:lower:]' '[:upper:]') echo "【Start Processing】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1 # Check the environment case "${input_environment}" in "dev" | "stg" | "prd") echo "Connecting to ${environment} environment..." >> ${LOG_FILE} 2>&1 # AWS MFA Authentication aws-mfa --profile=${AWS_PROFILE_PREFIX}-${input_environment} >> ${LOG_FILE} 2>&1 # Set environment variables AWS_PROFILE=$(eval "echo \${AWS_PROFILE_PREFIX}-${input_environment}") AWS_S3_IMAGE_UPLOAD_DIR=$(eval "echo s3-bucket-${input_environment}-to/path/");; *) echo "Please enter the correct environment." >> ${LOG_FILE} 2>&1 echo "【End Processing】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1 exit;; esac echo "【Start Upload Image】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1 # Remove .DS_Store find . -name ".DS_Store" | xargs rm -f # Upload images to S3 aws s3 cp ./${IMAGE_UPLOAD_DIR} s3://${AWS_S3_IMAGE_UPLOAD_DIR} --profile=${AWS_PROFILE} --recursive >> ${LOG_FILE} 2>&1 echo "【End Upload Image】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1 echo "【End Processing】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1

ShellScript で踏み台サーバ(EC2)経由で DB にアクセスして SQL を実行する方法

  • POST
ShellScript で踏み台サーバ(EC2)経由で DB にアクセスして SQL を実行する方法について調査した結果を備忘録として残しておく 環境 OS: MacOS DB: PostgreSQL フォルダ構成 ./ ├── sql/ │ └── execute.sql └── execute_sql.sh 実際のコード 環境変数(xxx 部分)は実際の環境に応じて書き換える #!/bin/sh # DEV EC2_HOST_DEV=xxx EC2_PEM_KEY_DEV=xxx DB_HOST_DEV=xxx DB_PORT_DEV=5432 DB_NAME_DEV=xxx DB_USER_DEV=xxx DB_PASSWORD_DEV=xxx # STG EC2_HOST_STG=xxx EC2_PEM_KEY_STG=xxx DB_HOST_STG=xxx DB_PORT_STG=5432 DB_NAME_STG=xxx DB_USER_STG=xxx DB_PASSWORD_STG=xxx # PRD EC2_HOST_PRD=xxx EC2_PEM_KEY_PRD=xxx DB_HOST_PRD=xxx DB_PORT_PRD=5432 DB_NAME_PRD=xxx DB_USER_PRD=xxx DB_PASSWORD_PRD=xxx # Shared SQL_DIR=sql SQL_FILE=${SQL_DIR}/execute.sql LOG_FILE=log/batch.log read -p "Which environment connect to? (dev/stg/prd): " input_environment # Convert to uppercase environment=$(echo "${input_environment}" | tr '[:lower:]' '[:upper:]') echo "【Start Processing】$(date "+%Y/%m/%d %H:%M:%S")" >> ${LOG_FILE} 2>&1 # Check the environment case "${input_environment}" in "dev" | "stg" | "prd") echo "Connecting to ${environment} environment..." >> ${LOG_FILE} 2>&1 EC2_HOST=$(eval "echo \${EC2_HOST_${environment}}") EC2_PEM_KEY=$(eval "echo \${EC2_PEM_KEY_${environment}}") DB_HOST=$(eval "echo \${DB_HOST_${environment}}") DB_PORT=$(eval "echo \${DB_PORT_${environment}}") DB_NAME=$(eval "echo \${DB_NAME_${environment}}") DB_USER=$(eval "echo \${DB_USER_${environment}}") DB_PASSWORD=$(eval "echo \${DB_PASSWORD_${environment}}");; *) echo "Please enter the correct environment." exit;; esac scp -i ${EC2_PEM_KEY} -r ${SQL_DIR} ${EC2_HOST}:~/ ssh -i ${EC2_PEM_KEY} -T ${EC2_HOST} <<EOF >> ${LOG_FILE} 2>&1 # Set DB Password export PGPASSWORD=${DB_PASSWORD} # Execute SQL psql -p ${DB_PORT} -h ${DB_HOST} -d ${DB_NAME} -U ${DB_USER} -f ${SQL_FILE} # Remove SQL rm -rf sql EOF