teerraformにて、東京リージョン、大阪リージョンにて、
S3 クロスリージョンレプリケーションの記載を行なってみる。
◾️構成図
以下、terraformで、S3 クロスレプリケーションの記載方法になる。
teerraformにて、東京リージョン、大阪リージョンにて、
S3 クロスリージョンレプリケーションの記載を行なってみる。
◾️構成図
以下、terraformで、S3 クロスレプリケーションの記載方法になる。
課題:
Lambda内部で生成したテキストファイルをS3側で圧縮して保管できるか試してみる。
■IAM
1)ポリシーを作成する。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::バケット名/*”
}
]
}
################################
2)IAMロールの作成を行う。
上記で作成したIAMポリシーを選択
■S3
1)以下、バケットポリシーの編集を行う。
########## サンプルコード ################
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::アカウントID:role/”iam role名”
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::バケット名/*”
}
]
}
#####################################
■Lambda
1)ソースコード入力
###########サンプルコード########
import boto3
from datetime import datetime
import gzip
import shutil
print('Loading function') # ②Functionのロードをログに出力
s3 = boto3.resource('s3') # ③S3オブジェクトを取得
# ④Lambdaのメイン関数
def lambda_handler(event, context):
bucket = ‘バケット名’ # ⑤バケット名を指定
prefix = 'test_' + datetime.now().strftime('%Y-%m-%d-%H-%M-%S') # ⑥保存するファイルのprefixを指定
file_name = prefix + '.txt' # ⑦保存するテキストファイル名
key = prefix + '.txt.gz' # ⑧保存するgzファイル名
file_contents = 'Lambda test' # ⑨ファイルに保存するテキストの内容
# ⑩/tmpにtxtファイルを出力
with open('/tmp/' + file_name, 'w') as f:
f.write(file_contents)
# ⑪/tmpにgzファイルを作成
with open('/tmp/' + file_name, 'rb') as f_in:
with gzip.open('/tmp/' + key , 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
obj = s3.Object(bucket,key) # ⑫バケット名とパスを指定
obj.upload_file( '/tmp/' + key ) # ⑬gzファイルをS3に出力
return
###############################
2)Lambda側で上記で作成したIAM Roleを選択する。
3)Lambda側で実行後、S3のバケットで確認する
結果:
Lambda内部で生成したテキストファイルをS3側で圧縮して保管していることが把握できる。
まずは、KMSにて、キーの作成を行ってみます。
1)KMSのマネージメント画面に移動(以下の画面)
2)キー作成を選択する
3)対称を選択
4)詳細オプションから”KMS”を選択
5)次へ
6)エイリアス名を記載
7)次へ
8)“キーの管理者がこのキーを削除できるようにします” のチェックを外す
9)次へ
10)対象のユーザー及びRoleを選択する。
11)次へ
14)完了すると、以下のようにマネージメントコンソール上で確認ができる
■S3(バケット側)
1)対象のバケットを選択する。
2)プロパティタブを選択する。
3)デフォルトの暗号化の箇所の編集を選ぶ。
4)サーバー側の暗号化
->有効にする
5)暗号化キータイプ
->SSE-KMSを選択
6)AWS KMSキー
->KMSマスターキーからの選択する
7)KMSマスターキー
->上記で作成したKMSマスターキーを選択する。
8)変更を保存を押す。
アプロードしたファイルを一般公開を行なった後に
ブラウザからアクセスを行うと以下のようにアップロードしたファイルの表示されず
KMSによる暗号化に関する記述がされてます。
ちなみに、別のバケットでKMSでの暗号化を行うわないで、アップロードしたファイルにアクセスすると、
普通にアップロードしたファイルが観覧可能でした。
以下、Springbootベースでのコンテナ定義を作成する。(詳細な設定については、割愛。)
ログ設定:
以下の設定にする。
ログドライバー: awsfirelens
①[delivery_stream] [Value] [my-stream] <—kinesis firehouseの”Delivery stream name”になる。
②[region] [Value] [ap-northest-1] <—リージョンを指定する。
③[Name] [Value] [firehouse] <—firehouseと記載
firelens側:
以下を選択すること。
setting(1)
setting(2)
setting(3)
Kinesis Data Firehoseを選択:
2)delivery_streamに任意の名前(今回は、my-stream)を入力
3)Destination:Amazon S3を選択
4)S3 bucket:出力先のS3を選択
コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...