見出し画像

AWS Lambda Python S3へファイルアップロードで別のS3にその暗号化ファイルをアップロード(1/3)

こんにちは。現在、AWSにつきまして、勉強させて頂いております者です。

今回は、AWSのLambda(Python)で、S3バケットにファイルがアップロードされたイベントで、別のS3バケットに、その暗号化ファイルをアップロードする方法につきまして、書かせて頂きたいと存じ上げます。

私はWSL(Windows10)を使用中で、WSL環境での説明になりますが、他の環境をお使いの方は、ご自身で環境に合わせてご対応頂きたく存じ上げます。

◆使うAWSサービス                                                  ・EC2仮想サーバー(Amazon Linux 2)                ・S3バケット                                                          ・Lambda       

◆対象者                                                                      ・AWSのアカウントを取得されておられます方                                                                              ・AWSコンソールのセキュリティステータス設定を全て完了されておられます方

画像1

◆事前にご準備頂くもの

  ・FileZillaのインストール                                    ・TeraTermのインストール                                  ・IAMロールの作成 

画像5

※話が前後致しまして、大変、申し訳ありませんが、「ロール」につきまして、説明が巻末にございます。解り易く説明致しておりますので、そちらを先に、ご購読頂きたい次第です。

Appendix  A  →(3/3)の最後です。

※あともう一つ。AWSのセキュリティ対策としまして、S3に、「アクセスコントロール」というものが必要になります。テストをしてから、「どうしてS3にアクセス出来ないんだ」と、慌てないように、巻末のAppendix  Bにて、ご説明致しております。話が前後して、大変、申し訳ありませんが、「始められます前に」、巻末の(3/3)のAppendix A、Appendix Bをご参照頂きますよう、宜しくお願い申し上げます。


◆概要

1. EC2インスタンスの作成                                  2. VenvでEC2内仮想環境構築                              3. S3バケット作成                                                  4. ライブラリデプロイ前のLambdaのテスト    5. pyminizipというファイル暗号圧縮ライブラリのLambda関数へのデプロイ                             6. デプロイ済のLambda_function.zipをLambdaにアップロード                                       7. AWS料金節約の為、使用済みのS3バケットとEC2インスタンスの削除

画像2

   

1. EC2インスタンス作成

(1)AWSコンソールから、EC2を選択し、EC2インスタンスを起動します。

画像3

(2)  「Amazon Linux 2」を選択します。

画像30

(3)無料枠の「t2.micro」サービスを選択します。

画像6

(4) 詳細を設定します。

画像7

(5)ストレージの追加をします。

画像8

(6)タグの追加もそのままで、次の「セキュリティグループの設定」へ進みます。

画像9

(7) 内容を確認し、「確認と作成」へ進みます。     

画像10

(8)インスタンス作成の確認をしインスタンスを起動します。

画像11

(9)キーペアを作成します。 適当な名前を決めて下さい。そして必ず、「キーペアのダウンロードをした後で」 インスタンスを作成します。キーペアは、WindowsのDownloadsフォルダに格納されます。

画像12

  ※EC2インスタンスは、起動までに約10分以上時間がかかります。

(10)  EC2インスタンスが起動したら、パブリックIPアドレスとパブリックDNSをメモするか、こちらの画面のスクリーンショットを撮っておきます。

画像13

2. VenvでEC2内仮想環境構築   

(1)TeraTermを起動し、このまま「OK」を押します。

画像14

(2)ユーザー名に「ec2-user」と入力し、認証方式は「RSA/DSA/ECDSA/ED25519鍵を使う」を選択し、右側の「…」ボタンを押すと、Windowsのエクスプローラが開くので、Downloadsフォルダから、先程ダウンロードしたキーペアをクリックします。

画像15

(3)「OK」を押したら、EC2環境に入ることが出来ました。プロンプトには、[ec2-user@ip-*******]$と表示されればOKです。

画像16

(4)Venvを使い、EC2内に仮想環境を作ります。

a. Python3をインストールします。

【注意】インストールする為に、Ubuntuなどでは、「apt 」を使いますが、現在は、Amazon Linux 2 環境内におりますので、「yum」を使います。

 $ sudo yum install python3 -y


b. Venv(旧Virtualenv)を使い、仮想環境を作ります。

$ python3 -m venv ***/env

「***」の部分は、好きな環境名を決めて下さい。


c. 仮想環境に入ります。

[ec2-user ~]$ source ~/***/env/bin/activate

上手く入れたら、プロンプトの先頭に(env)が追加されます。

(env)[ec2-user@~]$


 d. pipの最新版をインストールします。

(env)[ec2-user@~]$ pip install pip --upgrade


e.開発に必要なBoto3ライブラリをインストールします。

(env)[ec2-user@~]$pip install boto3


f.「pyminizip」というファイル暗号圧縮ライブラリもインストールしておきます。

(env)[ec2-user@~]$ sudo yum install -y gcc zlib-devel

(env)[ec2-user@~]$ pip install pyminizip


g.最後に、Venv環境から抜けます。

(env)[ec2-user@~]$ deactivate


h. プロンプトが元に戻ります。

 [ec2-user@~]$


i. 接続を終わります。右上の×を押し、切断しますか?で「OK」を押します。

画像17

3. S3バケットを2つ作ります。

コンソールで、「read用」と「write用」のS3バケットを2つ作ります。

(1)   コンソールから、S3を選択し、「バケットを作成する」を押します。

画像18

(2) 世界でユニークな(唯一ひとつだけの)名前をつけ、日本在住の方は、東京リージョンのままで、次へ進みます。(バケットを2つ作るので、名前の末尾に、それぞれreadとwriteをつけると解り易い)

画像19

(3)そのまま「次へ」を押します。

画像20

(4)S3にアクセス出来ない問題が発生したら困るので、テストとして「完了後、直ぐに削除する前提で」パブリックアクセスをONにします。

画像21

(5)確認し、S3バケットを作成します。

画像22

(6)同様のことを繰り返し、read用とwrite用にS3バケットを2つ、作成します。

画像23

4.ライブラリデプロイ前のLambdaのテスト

まずは簡単な動作から、確認します。簡単なLambda関数を作成します。

(1)コンソールから、Lambdaを選択し、「関数の作成」ボタンを押します。

画像24

(2)「設計図の使用」と「s3-get-object-python」を選択し、画面を下にスクロールさせて「設定」を押します。

画像25

  (3)詳細を設定します。実行ロールというのは、Lambdaに与えられる権限のことです。作成済なら、「既存のロールを使用する」を選択し、トリガーは、作成した「read用の」S3バケットを指定します。トリガーとは、これから作戦するLambda関数を呼び出す「引き金となる」イベントのことです。ここで、read用のS3バケットに、動作が起こった場合に、Lambdaの関数が実行されます。

画像26

(4) テストの際は、「トリガーの有効化」のチェックを外しておいても良いですが、忘れない為に、チェックしておきます。

画像27

(5)「関数の作成」を押します。

画像28

(6)関数が作成されたら、中央の「Lambda_function」のボタンをクリックして、Lambda関数を編集します。

画像29

(7)まずは一旦、表示されているコードを全て削除して、「こちらの画面の通りに」コードを書き、右上の「保存」ボタンを押して下さい。

画像30

AWS Lambda(2/3)へ続く





                  

 




この記事が気に入ったらサポートをしてみませんか?