Posted:
| Categories:
cheatsheet
| Tags:
AWS,
aws-cli,
cheatsheet,
ECR
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.ecr.aws/hoge/test-20210910-1:latest
push の手順は各リポジトリにある。
Read more...Posted:
| Categories:
cheatsheet
| Tags:
aws-cli,
cheatsheet
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") | .value'
aws iam create-policy --policy-name ポリシー名 --profile プロファイル --policy-document file://developerpolicy.json --description "this is ...."
CLIのアップデート
pip install awscli
Read more...Posted:
| Categories:
AWS
| Tags:
aws-cli,
ECS,
Fargate
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-0123456789abcdef0,subnet-0123456789abcdef1,subnet-0123456789abcdef2],securityGroups=[sg-0123456789abcdef0],assignPublicIp=DISABLED}"\
--deployment-controller type=ECS
aws cliのecsのcreate-serviceのオプションは多いのでCLIで作るのを想定してる感じある。
Read more...Posted:
| Categories:
AWS
| Tags:
aws-cli,
docker,
ECR
dockerコンテナをECR repository( 以下、ECR )にアップする
まず、Web UIにログインした後、上部メニューの[ サービス ]->[ Elastic Container Registry ]->[ リポジトリ ]->[ リポジトリの作成 ] からリポジトリを作成する。
リポジトリ名
『リポジトリ名は英字で始まる必要があり、小文字、数字、ハイフン、アンダースコア、スラッシュのみを含めることができます。』というルールがある。
スラッシュがつけられるので、組織名をつけた。Githubのレポジトリ名は大文字を許容するが、ECRは許容しないので小文字に変更する。
example/Hoge_Web -> example/hoge_web
AWS CLIがインストールされていなければインストールして、アカウント設定する
ECRへのアクセス設定をする
( これはリポジトリ作成時に説明が表示されます。一度、空のリポジトリを作成すると流れがより良く分かるかもしれません )
ECRにログインする
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
上記コマンドはそのまま実行できる形なので、出力を別途実行する必要はありません。
Dockerイメージをビルドする
カレントディレクトリにあるDockerfileを用いてイメージ作成。Dockerfileにある場所に移動してから docker buildする。
docker build -t example/hoge_api .
イメージにタグを付ける
docker tag example/hoge_api:latest 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/example/hoge_api:latest
Dockerレポジトリを作成
aws ecr create-repository --region us-east-1 --repository-name hoge
実行例。 これは2017/12に出たばかりの fargateモードで検証するため、バージニア北部リージョンにレポジトリを作成している
Read more...Posted:
| Categories:
AWS
| Tags:
aws-cli
環境変数
AWS CLI の設定変数
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_session_token||AWS_SESSION_TOKEN||-
変数が参照される順序
- 環境変数
- AWS認証情報 ~/.aws/credentials
- CLI構成ファイル ~/.aws/config
- インスタンスプロファイルの認証情報
でも『環境変数を参照するプログラム』は沢山ある
という悩みを解決しそうな
AWSを操作(AWS CLIに限らない)する場合の環境変数設定作業を軽くする
Read more...Posted:
| Categories:
AWS
| Tags:
AWS,
aws-cli,
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:123456789012:key/12345678-1234-1234-1234-1234567890ab ]だった )
ココの方法に従い、
aws-cliで上記のarnを指定して環境変数KEYIDにarnを指定する
export KEYID=arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-1234567890ab
暗号化
aws kms encrypt --key-id $KEYID --plaintext 'mackarelのAPIキー'
下記の内容が出力される
{
"KeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-1234567890ab",
"CiphertextBlob": "himitu"
}
CiphertextBlobをコード側で利用する。 node.jsでのコードは下記が参考になる。
Read more...Posted:
| Categories:
AWS
| Tags:
aws-cli,
Route53
新しいドメインの設定
どこかでドメインを取る
Route53 の設定は https://qiita.com/Yuki_BB3/items/effdf1bb38263bfef82a を参考にした
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...