CloudShellでaws-cliコマンドを打ちまくる
お疲れ様です。 中村です。
awsの勉強をしていると、awsリソースをコンソール画面でポチポチ作るよりもaws-cliを使う方がいいよーと言われる事がよくあります。
今までzennで記事を書いてきました
こんなんとか
こんなんとか
いずれもコンソールポチポチの手順を紹介しているので、当然UIのアプデが入れば記事の内容は劣化していく事になります。
なので、ぼくもaws-cliを積極的に活用したほうがいいんだろうなーと思うようになりました。
しかし、ローカルPCからaws-cliを叩くとなるとAWSへのアクセスキーが必要になり、そのアクセスキーが漏洩してしまってエラい事になるなんて話も聞きます。どうすればいいんだぁぁぁぁ
そこで登場するのがCloudShellというサービス。コンソール画面で使えるブラウザベースのシェルです。
コンソールにログインしているIAMユーザーと同等の権限で、AWSリソースの操作ができます。
今回はこれを使ってaws-cliを叩いてみようと思います。
CloudShell起動
検索窓で「cloudshell」と検索、「CloudShell」をクリックする
CloudShellの紹介画面が出てきます。「Clode」をクリックする
こんな感じのターミナルっぽい画面が出てきますね
権限について
CloudShellで操作できる範囲は基本的にコンソールにログインしているIAMユーザーの権限となります。
AdministratorAccess
であれば基本何でも出来ますね!
AWSリソースを作成してみる
さてCloudShellでAWS-CLIを使ってAWSリソースを作成してみましょう
AWS CLI コマンドリファレンス
コマンドの書き方を調べるときは以下を使います。aws cli リファレンス
とかでググればすぐ出てきますね
リファレンス参照方法
基本英語になります。皆さん気合い入れていきましょうwww
まずサイトを開いたら、作成したいAWSサービス名をctrl + F
で探します。
今回はS3バケットを作ってみましょう。むむ。なんか複数あるな.....
S3バケットを作成したい場合は、どうやらs3api
を使うみたいですね
中を開くと、create-bucket
というのがあります。これに違いない!!
ちなみにですが、一覧の他のコマンドを見る限り、削除系はdelete-xxx
だったり、参照系はget-xxx
で統一されてるようですね
create-bucket
のページを開きましょう
さて、基本的にこれを見ながらコマンドを書いていく訳ですが、まず以下の数字の順番に書いていきます。
CloudShellに直接書いてもいいですが、まずはメモ帳に書いていくのがいいですかね。
aws s3api create-bucket
続いて、リファレンスのSynopsis
の所までスクロールします。
ここでは、コマンド実行時に設定できるオプション(パラメータ?)が示されています。
基本的に四角カッコ[]
で括られているものは任意。それ以外は必須となります。 ※例外アリ....
なので、ここでは最低でも--bucket
は書かないといけません。
aws s3api create-bucket --bucket
さらに下へスクロールすると、各オプションの値として何を書くべきかが解説されています。
必須オプションの--bucket
ではS3バケット名を指定する必要があるようですね
ということで、バケット名を決めて追記します。S3バケット名はグローバルで一意にする必要があるので、日付でも入れときゃいいでしょう!
aws s3api create-bucket --bucket nakam-bucket-20220821
エラーが出てしまいました... ナゼダ
[cloudshell-user@ip-xx-xx-xx-xx ~]$
[cloudshell-user@ip-xx-xx-xx-xx ~]$
[cloudshell-user@ip-xx-xx-xx-xx ~]$ aws s3api create-bucket --bucket nakam_bucket_20220821
An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
[cloudshell-user@ip-xx-xx-xx-xx ~]$
調べてみると以下の記事が見つかりました。 --create-bucket-configuration LocationConstraint=ap-northeast-1
というオプションが必要なようです。
バージニアリージョンでCloudShellを実行した場合、こちらのオプションは不要で、バケットはバージニアに作成されるようです。
それ以外のリージョンに作成したい場合はLocationConstraint=[リージョン名]
が必要。
という訳で、追記してコマンドを実行
aws s3api create-bucket --bucket nakam-bucket-20220821 \
--create-bucket-configuration LocationConstraint=ap-northeast-1
無事にコマンドが通りました。
[cloudshell-user@ip-xx-xx-xx-xx ~]$
[cloudshell-user@ip-xx-xx-xx-xx ~]$ aws s3api create-bucket --bucket nakam-bucket-20220821 \
> --create-bucket-configuration LocationConstraint=ap-northeast-1
{
"Location": "http://nakam-bucket-20220821.s3.amazonaws.com/"
}
[cloudshell-user@ip-xx-xx-xx-xx ~]$
コンソール画面でも見てみましょう。 うんうん。作成されてますね。うんうん。
念の為、バージニアリージョンでは追加したオプションが不要なのか確認しました。
コンソールでバージニアリージョンに変更した上で、CloudShellを起動。コマンドも通り、バケット作成できました。
[cloudshell-user@ip-xx-xx-xx-xx ~]$
[cloudshell-user@ip-xx-xx-xx-xx ~]$ aws s3api create-bucket --bucket nakam-bucket-20220821-useast1
{
"Location": "/nakam-bucket-20220821-useast1"
}
[cloudshell-user@ip-xx-xx-xx-xx ~]$
さいごに
何だか想定外の事がいろいろ起きましたが...
僕がAWS-CLIを使う時はだいたいこんな感じでやっております
コマンドを書くことや、コマンドリファレンスを参照することは、繰り返していけば慣れていくのではないかと思います
それではまた!
Discussion