AWSをCLIで使う機会があったのでそれをまとめます。
pythonで使う場合
pythonで使う場合はboto3というライブラリをインストールします。
pip install boto3
あとは以下同様にすれば使えます
IAM roleを設定する
AWSコンソールで、IAM roleを作成しましょう。与えるアクセス権は適当に決めてください。
作成したら、その時しか見れないAWS_SECRET_ACCESS_KEYが出るのでどこかに目盛りましょう。無くしたら再度ROLEを作り直せばいいです。
参考:
AWS では、アクセスキーのシークレットアクセスキーの部分を表示およびダウンロードする機会が 1 回限り与えられます。これをダウンロードしない場合や紛失した場合は、アクセスキーを削除して新しいアクセスキーを作成できます。
(https://docs.aws.amazon.com/ja_jp/general/latest/gr/managing-aws-access-keys.html)
AWSCLI
次にAWSCLIのインストール
自分がやったときは仮想環境だったので
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-virtualenv.html
に従いました。—userを入れないだけが違い
あとは適当に
~/.aws/credentials
~/.aws/config
に必要な認証情報を書き込めばOKです。
aws configure
AWS Access Key ID: xxxxxxxxxxxxxxxxx
AWS Secret Access Key: xxxxxxxxxxxxxxxxx
Default region name: xxxxxxxx
Default output format: xxxx
S3を使ってみる
python環境で、S3のデータを操作してみました。
import boto3
s3=boto3.resource('s3')
bucket = s3.Bucket('バケット名')
としたり
from boto3 import Session
s3client = Session().client('s3')
response = s3client.list_objects(
Bucket = 'バケット名'
)
とするといけます。適当に調べて使いましょう。
boto3 の罠
同じアカウントで、複数のプロジェクトを管理したりする場合など、IAMロールに限られたアクセス権しかないときがあります。例えば
s3://-projectA
|-projectB
として、一つのIMAロールがprojectAにしかアクセスできないようにしているとしましょう。
このとき、
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
としてしまうと罠にハマります。このコマンドはアカウント内の全てのバケットを探しに行きます。なので一つでもアクセスできないものがあると、access denied
になってしまうのです。更にタチが悪いのが、AWSCLIからは普通にアクセスできる(バケットリスト一覧を表示する機能はないはずですので、s3://projectAとアクセスするはずです)のです。
気をつけましょう。
AWS sagemakerを使う
その他
source set_kvs_sdk_env.sh
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_DEFAULT_REGION=
AWS ロールを作った
https://dev.classmethod.jp/cloud/aws/rekognition-video-analyze-kinesis-video-stream/
これを参考
ロールARNは