Tag: aws-cli

ECRのパブリックレポジトリをCLIから作成する

2021/09/10 時点だと --region us-east-1 が必要だった。でないと Could not connect to the endpoint URL: "https://api.ecr-public.ap-northeast-1.amazonaws.com/" というエラーがでる。AWS 管理コンソール上は東京リージョンで存在を確認できる。 作成 AWS 管理コンソールでの作り方は パブリックリポジトリの作成 aws ecr-public create-repository --repository-name hogehoge --region us-east-1 削除 aws ecr-public delete-repository --repository-name hogehoge --region us-east-1 push までの流れ push する前にログインする( public とはいえ push にはログインが必要 ビルドする タグづけをする push aws ecr-public get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin public.ecr.aws/hoge docker build -t test-20210910-1 . docker tag test-20210910-1:latest public.ecr.aws/hoge/test-20210910-1:latest docker push public. Read more...

AWS CLIのチートシート

CloudWatch logs を CLIで調査( fish ) クエリ投げる set queryId (aws logs start-query --log-group-name NginxAccessLog \ --start-time (date +%s --date "1 week ago") \ --end-time (date +%s) \ --query-string 'fields @timestamp, @message | filter @message NOT LIKE /ua:ELB-HealthChecker/ | sort @timestamp desc | limit 20'\ | jq -r '.queryId' ) ステータス確認 aws logs describe-queries | jq '.queries[] | select(.queryId=="$queryId")' 取得 aws logs get-query-results --query-id $queryId | jq '.results[][] | select(.field == "@message") | . Read more...

ECS Fargate を CLIで操作

ECSのサービス設定、つくる作業が煩雑なので、CLIで自動化できないか検討。 aws ecs create-service --cluster example-dev-20181030-1 \ --service-name env36\ --task-definition env36\ --desired-count 1\ --launch-type FARGATE\ --deployment-configuration maximumPercent=200,minimumHealthyPercent=100\ --network-configuration "awsvpcConfiguration={subnets=[subnet-111111111111,subnet-222222222222,subnet-33333333333],securityGroups=[sg-4444444444],assignPublicIp=DISABLED}"\ --deployment-controller type=ECS aws cliのecsのcreate-serviceのオプションは多いのでCLIで作るのを想定してる感じある。 Read more...

aws-cliが参照する環境変数

環境変数 AWS CLI Configuration Variables — AWS CLI 1.7.38 documentation CLIの初期設定について 認証情報とコマンド補完 TASK NOTES ||対象||設定ファイル変数||環境変数||オプション ||アクセスキーID||aws_access_key_id|| AWS_ACCESS_KEY_ID|| - ||シークレットアクセスキー||aws_secret_access_key|| AWS_SECRET_ACCESS_KEY|| - ||リージョン||region||AWS_DEFAULT_REGION||–region ||出力||output||AWS_DEFAULT_OUTPUT||–output ||プロファイル||profile|| AWS_DEFAULT_PROFILE|| –profile ||設定ファイル||-|| AWS_CONFIG_FILE|| - ||トークン||aws_security_token||AWS_SECURITY_TOKEN||- 変数が参照される順序 環境変数 AWS認証情報 ~/.aws/credentials CLI構成ファイル ~/.aws/config インスタンスプロファイルの認証情報 でも『環境変数を参照するプログラム』は沢山ある… という悩みを解決しそうな AWSを操作(AWS CLIに限らない)する場合の環境変数設定作業を軽くする Read more...

AWS KMSで鍵を保存、取得する

AWS KMS を awscli から利用してみる http://qiita.com/kanagi/items/2008aa9f43be26bd2746 classmethod AWS Key Management Serviceでキーの”管理”と”利用”を分離する http://dev.classmethod.jp/cloud/aws/kms-admin-user/ ###AWS Key Management Service(KMS)の利用方法 2016/12/13 mackerelの監視のON/OFFに使用した KMSのざっくりとした理解としては 「 暗号化、復号化の悩みとして『鍵を使って暗号化するのは技術的に可能』だが『鍵の保管場所』に困る」という点を解決するサービス、 という理解。 AWS KMSでの暗号化/復号化の手順はclassmethodのココが分かりやすい。 一度、aws-cliで復号化まで行う(15分程度)とよく分かる。 また暗号化されたciphertextはコードに埋め込んで使用する 下記にmackarelでの暗号化、復号化の方法ですが [ IAM ]->[ 暗号化キー(Encryption Keys) ]->[ フィルター: ]で[ アジアパシフィック(東京) ]をクリック [ MackarelAPI ]をクリックし、[ ARN ]の値をメモする。 ( 2016/12/13時点の mackarelのマスターキーは[ arn:aws:kms:ap-northeast-1:139332511982:key/3121367a-6009-493d-b3f1-05aa01a9c3f7 ]だった ) ココの方法に従い、 aws-cliで上記のarnを指定して環境変数KEYIDにarnを指定する $ export KEYID=arn:aws:kms:ap-northeast-1:1111111111111111111:key/3121367a-6009-493d-b3f1-05aa01a9c3f7 暗号化 $ aws kms encrypt --key-id $KEYID --plaintext 'mackarelのAPIキー' 下記の内容が出力される { "KeyId": "arn:aws:kms:ap-northeast-1:111111:key/3121367a-6009-493d-b3f1-05aa01a9c3f7", "CiphertextBlob": "himitu" } CiphertextBlobをコード側で利用する。 node. Read more...

Route53

新しいドメインの設定 どこかでドメインを取る Route53 の設定は https://qiita.com/Yuki_BB3/items/effdf1bb38263bfef82a を参考にした Route53 開く https://console.aws.amazon.com/route53/home?region=ap-northeast-1#hosted-zones: [ Create Hosted Zone ]->右側の[ Domain Name: ]入力、[ Type: ]は Public Hosted Zone のまま DNS サーバが 4 つ表示されるので、レジストラの管理画面から DNS を登録 CLI でいろいろ ゾーン ID の取得 ZONENAME="example.net." # 最後に「.」ドットをつけるの重要... 30minほど悩んだ... aws route53 list-hosted-zones | jq -r ".HostedZones[] | select(.Name == \"${ZONENAME}\") | .Id" # bashの変数を読むためにダブルコーテーションをクオートする 参考 上の list-hosted-zones の内容 aws route53 list-hosted-zones Read more...