SlideShare a Scribd company logo
Takayuki Shimizu
Solutions Architect, Amazon Data Services Japan, K.K.
2015/4/10
AWS Lambda ハンズオン
2-Tier アーキテクチャで未来へ
自己紹介
清水 崇之
• ソリューション アーキテクト(WEST 担当)
• 大阪のお客様にもプライム対応で参上します
• Web サービス全般、モバイル、ゲーム など
• AWS 芸人 (詳しくは slideshare)
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
事前準備
※Node.js をインストールされていない方は実施してください
5
Node.js インストール (Max OS X)
http://nodejs.jp/nodejs.org_ja/docs/v0.10/download/
6
サポートバージョン
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-
versions.html
7
Node.js インストール (Max OS X)
node-v0.10.xx.pkg
8
Node.js インストール (Max OS X)
Node.js が正しくインストールされたか確認します。
• 以下のコマンドを実行して Node.js のバージョンを確認します。
$ node --version
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
AWS Lambda とは
AWS Lambdaとは
クラウド上で、イベントをトリガーに独自のコードを稼働させる
Computeサービス
• EC2インスタンスやOS等インフラの管理作業が不要
• 毎日数件から毎秒数千件のリクエストまで自動的にスケール
• 従量課金、実際にコードが稼働した時間に対してのお支払
• 新たに追加された情報(イベント)に対して即座に応答するアプリケーションを、特
別な仕組みなく簡単に実装できる
• 2014年11月に発表され、現在はPreviewとして提供
特徴
インフラの管理が不要
ビジネスロジックにフォーカスできる
コードをアップロードするだけで、あと
はAWS Lambdaが以下をハンドリング
• キャパシティ
• スケール
• デプロイ
• 耐障害性
• モニタリング
• ロギング
• セキュリティパッチの適用
オートスケール
• イベントの発生レートに合わせて
自動でスケール
• プロビジョニング中や完了を気に
する必要なし
• コードが稼働した分だけのお支払
い
Bring your own code
Node.jsで書かれたコードを実行
コード内では以下も可能
• スレッド/プロセスの生成
• バッチスクリプトや何らかの実行ファ
イルの実行
• /tmpのread/write
各種ライブラリも利用可能
• ネイティブライブラリも可能
• 利用するライブラリを一緒にアップ
ロード
細やかな料金体系
• 100ミリ秒単位でのコンピュート
時間に対する価格設定
• リクエストに対する低額の課金
• 十分な無料枠
ユースケース
イメージリサイズ、サムネイル生成
S3に画像がアップロードされたときにサムネイルの生成
やリサイズを実行
AWS LambdaAmazon S3 Bucket イベント
元画像 サムネイル画像
1
2
3
値チェックや別テーブルへのコピー
DynamoDBへの書き込みに応じて値チェックをしつつ
別テーブルの更新やプッシュ通知を実行
AWS Lambda
Amazon DynamoDB
Table and Stream
プッシュ通知
別テーブルを更新
監査と通知
S3に保管されるCloudTrailのログを分析し、怪しい行動
や異常を検知したら通知する
AWS APIコール
AWS CloudTrail Logs
AWS Lambda
Bucketイベント プッシュ通知
口コミアプリ
投稿の書き込み/表示はDynamoDBと直接
レートの計算はモバイルアプリから直接Lambdaを実行し非同期で
実行
1. 認証・認可
・ FBアプリと連携
Cognito
DynamoDBApp with
AWS Mobile
SDK
2. 口コミの投稿
・ 投稿内容とレーティング
4. 過去の全データを元に平均値の計算と
結果のDynamoDBへの登録等
3. Lambda functionの起動
Lambda
Followers
写真共有モバイルアプリ
4. メタデータをDynamoDBに登録
- タイトル、コメント等
1. 認証・認可
・ FBアプリと連携
6. Push通知
- フレンドやフォロワーに通知
Cognito
Mobile Analytics
DynamoDB
S3
SNS7. 画像をポストしたことをAnalyticsに登録
3. 画像のリサイズ
2. S3への画像アップロード
5. 結果をSNSへ通知
App with
AWS Mobile
SDK
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
目的とゴール
25
目的:2-Tier アーキテクチャ
AWS Lambda
⎼サーバーレス、EC2レス
Amazon Cognito
⎼テンポラリクレデンシャル発行
Amazon S3、Amazon DynamoDB
⎼Lambdaを中心に各種サービスを連携したシステム構築
26
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
ゴール:画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
S3 HTML
27
ゴール:画像アップローダ
画像をアップロードできる
画像一覧を取得できる
実寸で表示
サムネイルで表示
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
ハンズオンの注意点
ハンズオンの注意点
以下の URL から Asset_20150410.zip をダウンロードしてください。
• https://s3-ap-northeast-1.amazonaws.com/shimiz-
training/LambdaHandson_20150410/Asset_20150410.zip
ディレクトリ構成
Asset_20150410
|-Part1.txt
|-Part2.txt
|-Part3.txt
|-images
|-test1.png
|-test2.jpg
・・・
ハンズオンの注意点
資料/コード中に記載される [xxx] という部分はすべて自身で独自に決めた文字列に置き換
えてください
1. [xxx-image-uploader] と入力
・・・
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::xxx-image-uploader/*"
]
}
・・・
・・・
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::takayuki-image-uploader/*"
]
}
・・・
例)タカユキさんの場合
xxx = takayuki
takayuki-image-uploader
資料/コード中 の記載 実際に入力する値
ハンズオンの注意点
コードは Asset に内包されている txt ファイルからコピペしてください。
この資料(PDF)をコピペすると、改行コードなど不要な文字列が混入する場合があります。
資料(PDF) からコピペしない txt ファイルからコピペする
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
Part1
35
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
S3 HTML
36
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
S3 HTML
マネージメントコンソール ログイン
38
AWS Management Consoleにログインする
AWSのホームページ(http://aws.amazon.com/)から、管理コンソール「
AWS Management Console」にログインします。
1. [アカウント] をクリック
2. [AWS マネジメント コンソール] をクリック
39
AWS Management Consoleにログインする
作成したAWSアカウント情報を入力してサインインします。
1. メールアドレス入力
3. パスワード入力
4. クリックしてサインイン
2. クリック
40
AWS Management Consoleにログインする
MFA を設定しているアカウントは Authentication Code を入力します。
• MFAの詳細は以下URLを参照 http://aws.amazon.com/jp/iam/details/mfa/
1. Authentication Code を入
力2. クリックしてサインイン
41
リージョンを変更する
US East(N. Virginia)リージョンに変更します。
2. [US East (N.Virginia)] を選択
1. リージョン選択メニュー
注意
現時点でLambdaは東京リージョン未対応です。
このハンズオンは全て N. Virginia で実施します。
S3 バケットの作成
43
S3 HTML
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
S3バケットを作成し設定します
44
S3 を選択する
サービス一覧を表示して S3 を選択します。
1. [サービス一覧] ボタン
2. [S3]をクリック
45
オリジナル画像用バケットを作成する
オリジナル画像用バケットを作成します。
1. [Create Bucket] をクリック
46
オリジナル画像用バケットを作成する
[xxx-image-uploader] というバケット名で [US Standard] に作成する。
1. [xxx-image-uploader] と入力
2. [US Standard] を選択
3. [Create] をクリック
注意
この資料でこの先に出てくる全ての
プレフィックス(xxxの部分)は
自身で独自に決めた文字列に
置き換えてください。
例)タカユキさんの場合
takayuki-image-uploader
47
オリジナル画像用バケットをウェブホスティングする
Static Web Hosting 機能を Enable にします。
1. [xxx-image-uploader] を選択
2. [Properties] をクリック
3. [Static Website Hosting] をクリック
3. [Enable website hosting] を選択
4. [index.html] と入力
5. [Save] をクリック
48
オリジナル画像用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. [xxx-image-uploader] を選択
2. [Properties] をクリック
3. [Permissions] をクリック
4. [Add(Edit) bucket policy] をクリック
49
オリジナル画像用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. 次ページの内容を入力
2. [Save] をクリック
50
オリジナル画像用バケットのバケットポリシーを修正する
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::xxx-image-uploader/*"
]
}
]
}
※ xxx-image-uploader の部分は自身のS3バケット名を入力します。
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part1.txt] > [Section1]
注意
このPDFから コードをコピペしないで
ください。改行コードなど不要な文字
列が混入する場合があります。
Asset に内包された txt ファイル
の該当箇所からコピペしてください。
51
サムネイル画像用バケットを作成する
サムネイル画像用バケットを作成します。
1. [Create Bucket] をクリック
52
サムネイル画像用バケットを作成する
[xxx-image-uploader-thumbnail] というバケット名で [US Standard] に作成
する。
1. [xxx-image-uploader-thumbnail] と入力
2. [US Standard] を選択
3. [Create] をクリック
xxxの部分は
自身の文字列に置き換えてください
53
サムネイル画像用バケットをウェブホスティングする
Static Web Hosting 機能を Enable にします。
1. [xxx-image-uploader-thumbnail] を選
択
2. [Properties] をクリック
3. [Static Website Hosting] をクリック
3. [Enable website hosting] を選択
4. [index.html] と入力
5. [Save] をクリック
54
サムネイル画像用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. [xxx-image-uploader-thumbnail] を選択
2. [Properties] をクリック
3. [Permissions] をクリック
4. [Add(Edit) bucket policy] をクリック
55
サムネイル画像用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. 次ページの内容を入力
2. [Save] をクリック
56
サムネイル画像用バケットのバケットポリシーを修正する
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::xxx-image-uploader-thumbnail/*"
]
}
]
}
※ xxx-image-uploader-thumbnail の部分は自身のS3バケット名を入力します。
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part1.txt] > [Section2]
Lambda Exec Role の作成
58
S3 HTML
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
s3:GetObject
s3:PutObject
logs:*
Invoke Role Exec Role
Lambda が S3 の Put Get
および ログ出力するための権限を与える
59
IAM を選択する
サービス一覧を表示して IAM を選択します。
1. [サービス一覧] ボタン
2. [Identity & Access Management] をクリック
60
Exec Role を作成する
Exec Role を作成します。
2. [Create New Role] をクリック
1. [Roles] をクリック
61
Exec Role を作成する
Exec Role 名を入力します。
1. [image_uploader_exec_role] と入力
2. [Next Step] をクリック
62
Exec Role を作成する
Role Type を選択します。
2. [AWS Lambda] をクリック
1. [AWS Service Roles] を選択
63
Exec Role を作成する
Policy は選択せず次のステップへ
1. [Next Step] をクリック
64
Exec Role を作成する
Exec Role を作成します。
1. [Create Role] をクリッ
ク
65
Exec Role の Policy を修正する
作成した Exec Role を選択します。
1. [image_uploader_exec_role] をクリック
66
Exec Role の Policy を修正する
Inline Policy を作成します。
1. [∨] をクリック
2. [click here] をクリック
67
Exec Role の Policy を修正する
Custom Policy を選択します。
1. [Custom Policy] を選択
2. [Select] をクリック
68
Exec Role の Policy を修正する
内容を入力します。
1. [image_uploader_exec_policy] と入力
2. [次ページの内容] を入力
3. [Apply Policy] をクリック
69
image_uploader_exec_policy の内容
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader-thumbnail/*"
]
}
]
}
※ xxx-image-uploader-… の部分は自身のS3バケット名を入力します。
xxxの部分は
自身の文字列に置き換えてください
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part1.txt] > [Section3]
Node.js プログラムの作成
71
S3 HTML
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
Node.js
プログラム
Lambda にデプロイする
プログラムを作成します
72
Node.js プログラム を作成する
プログラムを格納するディレクトリを作成し、モジュールをインストールします。
$ cd ~/Desktop
$ mkdir ImageUploader
$ cd ImageUploader
$ npm install async gm
npm http GET https://registry.npmjs.org/gm
npm http GET https://registry.npmjs.org/async
...
npm http 200 https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz
async@0.9.0 node_modules/async
gm@1.17.0 node_modules/gm
├── array-parallel@0.1.3
├── array-series@0.1.5
├── through@2.3.6
└── debug@0.7.0
async および gm
モジュールを利用します
73
Node.js プログラム を作成する
メインプログラムを実装します。
vi を編集モード(Insert)へ移行します。
次ページの内容をコピペします。
vi をコマンドモード へ移行します。
vi を保存して終了します。
$ vi ImageUploader.js
i
:wq
ESC
74
//dependencies
varasync=require('async');
varAWS=require('aws-sdk');
vargm=require('gm')
.subClass({imageMagick:true});//EnableImageMagickintegration.
varutil=require('util');
//constants
varMAX_WIDTH=100;
varMAX_HEIGHT=100;
//getreferencetoS3client
vars3=newAWS.S3();
exports.handler=function(event,context){
//Readoptionsfromtheevent.
console.log("Readingoptionsfromevent:n",util.inspect(event,{depth:5}));
varsrcBucket=event.Records[0].s3.bucket.name;
varsrcKey=event.Records[0].s3.object.key;
vardstBucket=srcBucket+"-thumbnail";
vardstKey="thumbnail-"+srcKey;
//Sanitycheck:validatethatsourceanddestinationaredifferentbuckets.
if(srcBucket==dstBucket){
console.error("Destinationbucketmustnotmatchsourcebucket.");
return;
}
//Infertheimagetype.
vartypeMatch=srcKey.match(/.([^.]*)$/);
if(!typeMatch){
console.error('unabletoinferimagetypeforkey'+srcKey);
return;
}
varimageType=typeMatch[1];
if(imageType!="jpg"&&imageType!="png"){
console.log('skippingnon-image'+srcKey);
return;
}
//DownloadtheimagefromS3,transform,anduploadtoadifferentS3bucket.
async.waterfall([
functiondownload(next){
//DownloadtheimagefromS3intoabuffer.
s3.getObject({
Bucket:srcBucket,
Key:srcKey
},
next);
},
functiontranform(response,next){
gm(response.Body).size(function(err,size){
//Inferthescalingfactortoavoidstretchingtheimageunnaturally.
varscalingFactor=Math.min(
MAX_WIDTH/size.width,
MAX_HEIGHT/size.height
);
varwidth=scalingFactor*size.width;
varheight=scalingFactor*size.height;
//Transformtheimagebufferinmemory.
this.resize(width,height)
.toBuffer(imageType,function(err,buffer){
if(err){
next(err);
}else{
next(null,response.ContentType,buffer);
}
});
});
},
functionupload(contentType,data,next){
//StreamthetransformedimagetoadifferentS3bucket.
s3.putObject({
Bucket:dstBucket,
Key:dstKey,
Body:data,
ContentType:contentType
},
next);
}
],function(err){
if(err){
console.error(
'Unabletoresize'+srcBucket+'/'+srcKey+
'anduploadto'+dstBucket+'/'+dstKey+
'duetoanerror:'+err
);
}else{
console.log(
'Successfullyresized'+srcBucket+'/'+srcKey+
'anduploadedto'+dstBucket+'/'+dstKey
);
}
context.done();
}
);
};
コードスニペット: [Asset] > [Part1.txt] > [Section4]
ImageUploader.js の内容
75
Node.js プログラム をアーカイブする
ImageUploader.js と node_modules をアーカイブします。
• ImageUploader ディレクトリ内で以下コマンドを実行します。
ディレクトリ構造
ImageUploader.zip
|- ImageUploader.js
|- node_modules
|- async
|- gm
$ zip -r ImageUploader.zip ImageUploader.js node_modules
Lambda Function の作成
77
S3 HTML
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
Lambda Function を作成して
プログラムを設置します
78
Lambda を選択する
サービス一覧を表示して Lambda を選択します。
1. [サービス一覧] ボタン
2. [Lambda]をクリック
79
Lambda Function を作成する
Lambda Function を作成します。
1. [Create a Lambda function] をクリック
初利用の場合は以下のようなページが表示される
80
Lambda Function を作成する
Lambda Function を作成します。
1. [ImageUploader] と入力
2. [Upload a .ZIP file] を選択
81
Lambda Function を作成する
[ImageUploader.zip] をアップロードします。
1. [Upload] をクリック
2. [ImageUploader.zip] を選択
3. [Open] をクリック
82
Lambda Function を作成する
その他の設定を入力します。
1. [ImageUploader.js] と入力
3. [image_uploader_exec_role] を選択
4. [128] を選択
2. [handler] と入力
5. [60] を選択
6. [Create Lambda function] をクリック
83
Event Source を設定する
Event Source を設定します。
1. [○] を
クリック
2. [Add event source] をクリック
84
Event Source を設定する
xxx-image-uploader をイベントソースとして設定します。
2. [xxx-image-uploader] を選択
3. [Put] を選択
4. [Submit] をクリック
1. [S3] を選択
動作確認
86
S3 HTML
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
ここまでの作業で
枠内を作成した
87
マネージメントコンソールから画像をアップする
サービス一覧を表示して S3 を選択します。
1. [サービス一覧] ボタン
2. [S3]をクリック
88
マネージメントコンソールから画像をアップする
xxx-image-uploader を選択します。
1. [xxx-image-uploader] をクリック
89
マネージメントコンソールから画像をアップする
[Upload] をクリックします。
1. [Upload] をクリック
90
マネージメントコンソールから画像をアップする
画像をアップロードします。
1. [Add Files] をクリック
2. [test.png] を選択
3. [Open] をクリック
4. [Start Upload] をクリック
画像ファイル名に
スペースや記号などがあると
正常動作しないので注意してください
.png, .jpgのみ対応
91
サムネイルが作成されたことを確認する
xxx-image-uploader-thumbnail を選択します。
1. [xxx-image-uploader-thumbnail] をクリック
92
サムネイルが作成されたことを確認する
thumbnail-test.png が作成されていることを確認します。
1. [thumbnail-test.png] を選択
2. [Properties] をクリック
3. [url] をクリック
93
サムネイルが作成されたことを確認する
thumbnail-test.png を表示して width が 100px になるように縮小されている
ことを確認します。
オリジナル test.png(640x480) サムネイル thumbnail-test.png(100x75)
94
ログが出力されていることを確認する
ログが出力されていることを確認します。
1. [logs] をクリック
2. ログを確認
正常に動作しないときはログを確認してください。
1. LambdaFunctionが実行されてからログが出力されるまで数十秒くらいかか
りますので、あせらずにデバッグしてくさい。
2. (Invoke Role, Exec Role) において xxx の部分を間違って設定している可
能性があります。
3. ImageUploader.js の作成や、zip の圧縮に失敗している可能性があります。
4. 画像ファイル名にスペースや記号が入っている場合は正常動作しません。
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
Part2
97
S3 HTML
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
98
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
S3 HTML
画像をマネージメントコンソー
ルからアップロードするのでは
なく、HTML(Javascript)から
アップロードできるようにする
Cognito Identity Pool の作成
100
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
S3 HTML
直接HTML(JavaScript)からS3に
画像をアップロードできるように
Cognito で identity (テンポラリク
レデンシャル) を発行する
101
Cognito を選択する
サービス一覧を表示して Cognito を選択します。
1. [サービス一覧] ボタン
2. [Cognito] をクリック
102
Identity Pool を作成する
Identity Pool を作成します。
1. [Create new identity pool] をクリック
103
Identity Pool を作成する
Identity Pool の設定をします。
2. [Enable access to unauthenticated identities] をチェック
1. [ImageUploader] と入力
3. [Create Pool] をクリック
104
Identity Pool を作成する
1. [Decide later] を選択
2. [Create a new IAM role] を選択
3. [Cognito_ImageUploaderUnauth_DefaultRole] と入力 4. [Update roles] をクリック
Cognito Unauth Role の修正
106
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
s3:PutObject
Unauth_Role
S3 HTML
HTML(JavaScript)からS3に
画像をアップロードできる権限を
与える
107
Cognito_ImageUploaderUnauth_DefaultRole を修正する
サービス一覧を表示して IAM を選択します。
1. [サービス一覧] ボタン
2. [Identity & Access Management] をクリック
108
Cognito_ImageUploaderUnauth_DefaultRole を修正する
Cognito_ImageUploaderUnauth_DefaultRole を選択します。
2. [Cognito_ImageUploaderUnauth_Default] を選択
1. [Roles] をクリッ
ク
109
Cognito_ImageUploaderUnauth_DefaultRole を修正する
Cognito_ImageUploaderUnauth_DefaultRole にポリシーを追加します。
1. [Create Role Policy] をクリック
110
Cognito_ImageUploaderUnauth_DefaultRole を修正する
サービス一覧を表示して Lambda を選択します。
2. [Cognito_ImageUploaderUnauth_Default] を選択
1. [Roles] をクリッ
ク 1. [Custom Policy] を選択
2. [Select] をクリック
111
Cognito_ImageUploaderUnauth_DefaultRole を修正する
サービス一覧を表示して Lambda を選択します。
1. [image_uploader_html_policy] と入力
2. 次ページの内容を入力
3. [Apply Policy] をクリック
112
image_uploader_html_policy の内容
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader/*"
]
}
]
}
※ xxx-image-uploader の部分は自身のS3バケット名を入力します。
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part2.txt] > [Section1]
画像アップロード用 HTML を
S3 でホスティング
114
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
index.html
S3 HTML 画像をアップロードするための
HTML を作成する
Webホスティングするための
S3バケットも作成する
115
画像アップロード HTML 用 バケットを作成する
サービス一覧を表示して S3 を選択します。
1. [サービス一覧] ボタン
2. [S3]をクリック
116
画像アップロード HTML 用 バケットを作成する
HTML ホスティング用バケットを作成します。
1. [Create Bucket] をクリック
117
画像アップロード HTML 用 バケットを作成する
HTML ホスティング用バケットを作成します。
1. [xxx-image-uploader-html] と入力
2. [US Standard] を選択
3. [Create] をクリック
xxxの部分は
自身の文字列に置き換えてください
118
オリジナル画像用バケットを作成します。
画像アップロード HTML 用 バケットを作成する
1. [xxx-image-uploader-html] を選択
2. [Properties] を選択
4. [Enable website hosting] を選択
5. [index.html] と入力
3. [Static Website Hosting] を選択
6. [Save] をクリック
119
画像アップロード HTML 用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. [xxx-image-uploader-html] を選択
2. [Properties] をクリック
3. [Permissions] をクリック
4. [Add(Edit) bucket policy] をクリック
120
画像アップロード HTML 用バケットのバケットポリシーを修正する
誰でも閲覧できるように Bucket Policy を修正します。
1. 次ページの内容を入力
2. [Save] をクリック
121
画像アップロード HTML 用バケットのバケットポリシーを修正する
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::xxx-image-uploader-html/*"
]
}
]
}
※ xxx-image-uploader-html の部分は自身のS3バケット名を入力します。
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part2.txt] > [Section2]
122
AccountId を確認する
IdentityPoolId を確認する
123
<!DOCTYPE html>
<html><head>
<meta charset="UTF-8"><title>ImageUploader</title>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.21.min.js"></script>
</head><body>
<script>
// Cognito
var params = {
AccountId: "634266xxxxxx", // Please modify
RoleArn: "arn:aws:iam::634266xxxxxx:role/Cognito_ImageUploaderUnauth_DefaultRole", // Please modify
IdentityPoolId: "us-east-1:0cxxxxxx-eexx-46xx-88xx-12dfc2xxxxxx" // Please modify
};
AWS.config.region = "us-east-1";
AWS.config.credentials = new AWS.CognitoIdentityCredentials(params);
AWS.config.credentials.get( function (err) {
if (err) {
console.log(err);
} else {
console.log("Successfully authorized. ID:" + AWS.config.credentials.identityId);
}
});
// S3 Upload
function upload () {
console.log("Now uploading...");
var s3 = new AWS.S3({params:{Bucket:"xxx-image-uploader"}}); // Please modify
var file = document.getElementById("fileToUpload").files[0];
if (file) {
s3.putObject({
Key:file.name, ContentType:file.type, Body:file, ACL:"public-read"
}, function (err, data) {
if (err) {
console.log(err);
} else {
console.log("Successfully uploaded.");
}
});
}
}
</script>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="upload" onclick="upload()">
</body></html>
画像アップロード HTML を作成する(index.html)
xxxの部分は
自身の文字列を入力してください。
自身の AccountId を入力
作成したCognitoIdentityPool の
IdentityPoolId
コードスニペット: [Asset] > [Part2.txt] > [Section3]
自身の AccountId を入力
124
バケットに HTML をアップする
サービス一覧を表示して S3 を選択します。
1. [サービス一覧] ボタン
2. [S3]をクリック
125
バケットに HTML をアップする
1. [xxx-image-uploader-html] をクリック
xxx-image-uploader-html バケットに HTML をアップロードします。
126
xxx-image-uploader-html バケットに HTML をアップロードします。
バケットに HTML をアップする
1. [Upload] をクリック
2. [Add Files] をクリック
3. [index.html] をクリック
4. [Open] をクリッ
ク
5. [Start Upload] をクリック
画像アップロード用バケットの
CORS対応
128
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
S3 HTML
1. HTML
CORS の対応が必要
129
CORSとは
CORS(Cross-Origin Resource Sharing)は、ブラウザがオリジン(HTMLを読み
込んだサーバのこと)以外のサーバからデータを取得する仕組みです。
各社ブラウザには、クロスドメイン通信を拒否する仕組みが実装されています。
これは、クロスサイトスクリプティングを防止するためです。
ブラウザ
リクエスト
html, js, css
レスポンスヘッダで制御
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT
Ajax
S3 Origin
S3 HTML
130
画像アップロード用バケットのCORSを設定する
CORSを設定します。
1. [xxx-image-uploader] を選択
2. [Properties] を選択
3. [Permissions] を選択
4. [Add(Edit) CORS Configuration] をクリック
131
画像アップロード用バケットのCORSを設定する
CORSを設定します。
1. 次ページの内容を入力
2. [Save] をクリック
132
CORS Configuration
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
コードスニペット: [Asset] > [Part2.txt] > [Section4]
動作確認
134
サイトを確認する
サイトを確認します。
1. [xxx-image-uploader-html] を選択
3. [xxx-image-uploader-html.s3-website-
us-east-1.amazonaws.com] をブラウザで開く
2. [Static Website Hosting] を選択
135
サイトを確認する
画像を選択してアップロードできることを確認します。
1. [Browse] をクリックして画像(test2.png)を選択
2. [upload] をクリックして送信
3. Console にログが出力
test2.png
136
バケットにオリジナルとサムネイルが作成されていること
を確認する
xxx-image-uploader にオリジナル(test2.png)がアップロードされます。
xxx-image-uploader-thumbnail にサムネイル(thumbnail-test2.png)が作成されます。
test2.png thumbnail-test2.png
アジェンダ
AWS Lambdaとは?
目的とゴール
• 2-Tier アーキテクチャ
• 画像アップロードの概要
ハンズオンの注意点
Part1
• MCにログイン
• S3バケットの作成
• Lambda Exec Role の作成
• Node.js プログラムの作成
• Lambda Function の作成
• 動作確認
Part2
• 画像アップロード用 HTML を S3 でホス
ティング
• 画像アップロード用バケットの CORS 対応
• 動作確認
Part3
• DynamoDB の作成
• Lambda Exec Role の修正
• Node.js プログラムの修正
• Cognito Unauth Role の修正
• HTML の修正
• 動作確認
Part3
139
8. 一覧取得
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
S3 HTML
140
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
S3 HTML
DynamoDB で
画像ファイルを管理する
DynamoDB の作成
142
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
S3 HTML
DynamoDB の
テーブルを作成する
143
テーブルを作成する
サービス一覧を表示して DynamoDB を選択します。
2. [DynamoDB] をクリック
1. [サービス一覧] ボタン
144
テーブルを作成する
ImageUploader という名称でテーブルを作成します。
1. [Create Table] をクリック
145
テーブルを作成する
“Hash and Range” Primary Key Type でテーブルを作成します。
7. [Continue] をクリック
1. [ImageUploader] と入力
2. [Hash and Range] を選択
3. [String] を選択
4. [id] と入力
5. [Number] を選択
6. [timestamp] と入力
146
テーブルを作成する
インデックスは不要です。
1. [Continue] をクリック
147
テーブルを作成する
スループットを指定します。
3. [Continue] をクリック
1. [5] と入力
2. [5] と入力
148
テーブルを作成する
アラームははずします。
2. [Continue] をクリック
1. [Use Basic Alarms] のチェックをはずす
149
テーブルを作成する
テーブルを作成します。
1. [Create] をクリック
150
テーブルを確認する
テーブルを確認します。
1. [ImageUploader] テーブルが作成されたことを確認
Lambda Exec Role の修正
152
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
7. メタ情報
1. HTML
画像アップローダ
s3:GetObject
s3:PutObject
logs:*
Exec Role
dynamodb:PutItem
8. 一覧取得
S3 HTML
Lambda が DynamoDB に
PutItem する権限を与える
153
image_uploader_exec_policy を修正する
サービス一覧を表示して IAM を選択します。
1. [サービス一覧] ボタン
2. [Identity & Access Management] をクリック
154
image_uploader_exec_policy を修正する
image_uploader_exec_policy を修正します。
1. [ImageUploader] テーブルが作成されたことを確認
2. [image_uploader_exec_role] をクリック
1. [Roles] を選択
155
image_uploader_exec_policy を修正する
image_uploader_exec_policy を修正します。
1. [ImageUploader] テーブルが作成されたことを確認
1. [Edit Policy] をクリック
156
image_uploader_exec_policy を修正する
image_uploader_exec_policy を修正します。
1. 次ページの内容を追記
2. [Apply Policy] をクリック
157
image_uploader_exec_policy の内容
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader-thumbnail/*"
]
},
{
"Effect": "Allow",
"Action": [
"dynamodb:PutItem"
],
"Resource": [
"arn:aws:dynamodb:*:*:table/ImageUploader"
]
}
]
}
xxxの部分は
自身の文字列に置き換えてください
xxxの部分は
自身の文字列に置き換えてください
この部分を追記する
コードスニペット: [Asset] > [Part3.txt] > [Section1]
Node.js プログラム の修正
159
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
Node.js
プログラム
8. 一覧取得
S3 HTML
DynamoDB にデータ登録するよ
うに プログラムを修正する
160
Node.js プログラムの修正
・・・・・・
function upload(contentType, data, next) {
// Stream the transformed image to a different S3 bucket.
s3.putObject({
Bucket: dstBucket,
Key: dstKey,
Body: data,
ContentType: contentType
},
next);
},
function putItem(response, next) {
var time = String(new Date().getTime());
dynamodb.putItem({
TableName: 'ImageUploader',
Item:{
id: {S:'ImageUploader'},
timestamp :{N: time},
original :{S: srcBucket + '.s3-website-us-east-1.amazonaws.com/' + srcKey},
thumbnail :{S: dstBucket + '.s3-website-us-east-1.amazonaws.com/' + dstKey}
}
},
next);
}
], function (err) {
if (err) {
console.error(
'Unable to resize ' + srcBucket + '/' + srcKey +
' and upload to ' + dstBucket + '/' + dstKey +
' due to an error: ' + err
);
} else {
console.log(
'Successfully resized ' + srcBucket + '/' + srcKey +
' and uploaded to ' + dstBucket + '/' + dstKey
・・・・・・・
この部分を追記する
コードスニペット: [Asset] > [Part3.txt] > [Section2]
161
Node.js プログラムをアーカイブする
ImageUploader.js と node_modules をアーカイブします。
• ImageUploader ディレクトリ内で以下コマンドを実行します。
$ zip -r ImageUploader.zip ImageUploader.js node_modules
162
Lambda を選択する
サービス一覧を表示して Lambda を選択します。
1. [サービス一覧] ボタン
2. [Lambda]をクリック
163
1. [○] を
クリック
2. [Edit/Test] をクリック
Lambda Function を修正する
Edit/Test をクリックします。
164
Lambda Function を修正する
修正したプログラムをアップロードします。
1. [ImageUploader] テーブルが作成されたことを確認
1. [Upload] をクリック
2. [ImageUploader.zip] を選択
3. [Open] をクリック
4. [Save] をクリック
念のため動作確認
166
DynamoDBの動作を確認する
画像を選択してアップロードできることを確認します。
1. [Browse] をクリックして画像(test3.png)を選択
2. [upload] をクリックして送信
3. Console にログが出力
test3.png
167
DynamoDBのデータを確認する
サービス一覧を表示して DynamoDB を選択します。
2. [DynamoDB] をクリック
1. [サービス一覧] ボタン
168
DynamoDBのデータを確認する
1. [ImageUploader] を選択
2. [Explore Table] をクリック
169
DynamoDBのデータを確認する
1. [Scan] を選択
2. [Go] をクリック
3. 検索された Item をチェック
4. データが登録されていることを確認
Cognito Unauth Role の修正
171
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
s3:PutObject
Unauth_Role
Dynamodb:Query
S3 HTML
HTML(JavaScript)が
DynamoDB から
データを取得する権限を与える
172
Cognito_ImageUploaderUnauth_DefaultRole を修正する
サービス一覧を表示して IAM を選択します。
1. [サービス一覧] ボタン
2. [Identity & Access Management] をクリック
173
Cognito_ImageUploaderUnauth_DefaultRole を修正する
1. [Roles] を選択
2. [Cognito_ImageUploaderUnauth_DefaultRole] をクリック
174
Cognito_ImageUploaderUnauth_DefaultRole を修正する
1. image_uploader_html_policy の
[Edit Policy] をクリック
175
Cognito_ImageUploaderUnauth_DefaultRole を修正する
1. 次ページの内容を追記
2. [Apply Policy] をクリック
176
image_uploader_html_policy の内容
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::xxx-image-uploader/*"
]
},
{
"Effect": "Allow",
"Action": [
"dynamodb:Query"
],
"Resource": [
"arn:aws:dynamodb:*:*:table/ImageUploader"
]
}
]
}
この部分を追記する
xxxの部分は
自身の文字列に置き換えてください
コードスニペット: [Asset] > [Part3.txt] > [Section3]
HTML の修正
178
Lambda
4. 画像アップロード
S3 Thumbnail
S3 Origin
6. 画像リサイズ
5. ファンクション実行
CloudWatch
ログ
DynamoDB
2. ゲスト認証
Cognito
3. Temporary Credential
画像アップローダ
7. メタ情報
1. HTML
8. 一覧取得
index.html
S3 HTML
HTML(JavaScript)が
DynamoDB から
データを取得できるように修正
HTML(JavaScript)が
DynamoDB から
データを取得できるように修正
179
<!DOCTYPEhtml>
<html><head>
<metacharset="UTF-8"><title>ImageUploader</title>
<scriptsrc="https://sdk.amazonaws.com/js/aws-sdk-2.1.21.min.js"></script>
</head><body>
<script>
//Cognito
varparams={
AccountId:"634266xxxxxx",
RoleArn:"arn:aws:iam::634266xxxxxx:role/Cognito_ImageUploaderUnauth_DefaultRole",
IdentityPoolId:"us-east-1:0xxxxxx-eexx-46xx-88xx-12dfc2xxxxxx"
};
AWS.config.region="us-east-1";
AWS.config.credentials=newAWS.CognitoIdentityCredentials(params);
AWS.config.credentials.get(function(err){
if(err){
console.log(err);
}else{
console.log("Successfullyauthorized.ID:"+AWS.config.credentials.identityId);
}
});
//S3Upload
functionupload(){
console.log("Nowuploading...");
vars3=newAWS.S3({params:{Bucket:”xxx-image-uploader"}});
varfile=document.getElementById("fileToUpload").files[0];
if(file){
s3.putObject({
Key:file.name,ContentType:file.type,Body:file,ACL:"public-read"
},function(err,data){
if(err){
console.log(err);
}else{
console.log("Successfullyuploaded.");
}
});
}
}
//DynamoDBQuery
functiondownload(){
console.log("Nowloading...");
vardynamodb=newAWS.DynamoDB({params:{TableName:"ImageUploader"}});
dynamodb.query({
AttributesToGet:['original','thumbnail'],
KeyConditions:{
id:{
AttributeValueList:[{S:"ImageUploader",}],
"ComparisonOperator":"EQ"
}
},
ScanIndexForward:false
},function(err,data){
if(err){
console.log(err);
}else{
varwrapper=document.getElementById('imageList');
wrapper.innerHTML='';
data.Items.map(function(item){
vara=document.createElement('a');
a.href="http://"+item.original.S;
varimg=document.createElement('img');
img.src="http://"+item.thumbnail.S;
a.appendChild(img);
returna;
}).forEach(function(a){
wrapper.appendChild(a);
wrapper.appendChild(document.createElement('br'));
});
console.log("Successfullyloaded.");
}
});
}
</script>
<inputtype="file"name="fileToUpload"id="fileToUpload">
<inputtype="submit"value="upload"onclick="upload()">
<inputtype="submit"value="download"onclick="download()">
<hr><divid="imageList"></div>
</body></html>
画像アップロード HTML を修正する(index.html)
この部分を追記する
赤字の部分は
自身の文字列に置き換えてください
赤字の部分は
自身の文字列に置き換えてください
この部分を追記する
コードスニペット: [Asset] > [Part3.txt] > [Section4]
180
HTML を再アップする
サービス一覧を表示して S3 を選択します。
1. [サービス一覧] ボタン
2. [S3]をクリック
181
HTML を再アップする
1. [xxx-image-uploader-html] をクリック
xxx-image-uploader-html バケットに HTML をアップロードします。
182
xxx-image-uploader-html バケットに HTML をアップロードします。
HTML を再アップする
1. [Upload] をクリック
2. [Add Files] をクリック
3. [index.html] をクリック
4. [Open] をクリッ
ク
5. [Start Upload] をクリック
動作確認
184
動作確認
xxx-image-uploader-html.s3-website-us-east-1.amazonaws.com にアクセ
スして動作確認します。
1. [download] をクリック
2. [サムネイル画
像] をクリック
3. [オリジナル画像] が表示される
注意)
JavaScriptは最低限しか実装していません。
エラー処理などはご自身で実装してください。
お疲れ様でした
AWSで作業した環境の片付けをおねがいします
(そのままにしておくと、課金が発生します)

More Related Content

What's hot

20170725 black belt_monitoring_on_aws
20170725 black belt_monitoring_on_aws20170725 black belt_monitoring_on_aws
20170725 black belt_monitoring_on_aws
Amazon Web Services Japan
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray
Amazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon Kinesis
Amazon Web Services Japan
 
AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介
Amazon Web Services Japan
 
AWS Black Belt Online Seminar コストの観点から見るアカウント管理
AWS Black Belt Online Seminar コストの観点から見るアカウント管理AWS Black Belt Online Seminar コストの観点から見るアカウント管理
AWS Black Belt Online Seminar コストの観点から見るアカウント管理
Amazon Web Services Japan
 
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20200818 AWS Black Belt Online Seminar AWS Shield Advanced20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
Amazon Web Services Japan
 
AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策
Amazon Web Services Japan
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
Amazon Web Services Japan
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
Amazon Web Services Korea
 
AWS Black Belt Techシリーズ AWS Storage Gateway
AWS Black Belt Techシリーズ  AWS Storage GatewayAWS Black Belt Techシリーズ  AWS Storage Gateway
AWS Black Belt Techシリーズ AWS Storage Gateway
Amazon Web Services Japan
 
初心者向けWebinar AWS上でのファイルサーバ構築
初心者向けWebinar AWS上でのファイルサーバ構築初心者向けWebinar AWS上でのファイルサーバ構築
初心者向けWebinar AWS上でのファイルサーバ構築
Amazon Web Services Japan
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
Amazon Web Services Japan
 
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPCAWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
Amazon Web Services Japan
 
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
Amazon Web Services Japan
 

What's hot (20)

20170725 black belt_monitoring_on_aws
20170725 black belt_monitoring_on_aws20170725 black belt_monitoring_on_aws
20170725 black belt_monitoring_on_aws
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon Kinesis
 
AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介
 
AWS Black Belt Online Seminar コストの観点から見るアカウント管理
AWS Black Belt Online Seminar コストの観点から見るアカウント管理AWS Black Belt Online Seminar コストの観点から見るアカウント管理
AWS Black Belt Online Seminar コストの観点から見るアカウント管理
 
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20200818 AWS Black Belt Online Seminar AWS Shield Advanced20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
 
AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
 
AWS Black Belt Techシリーズ AWS Storage Gateway
AWS Black Belt Techシリーズ  AWS Storage GatewayAWS Black Belt Techシリーズ  AWS Storage Gateway
AWS Black Belt Techシリーズ AWS Storage Gateway
 
初心者向けWebinar AWS上でのファイルサーバ構築
初心者向けWebinar AWS上でのファイルサーバ構築初心者向けWebinar AWS上でのファイルサーバ構築
初心者向けWebinar AWS上でのファイルサーバ構築
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPCAWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
 
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
 

Similar to AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ

AWS Black Belt Online Seminar lumberyard
AWS Black Belt Online Seminar lumberyardAWS Black Belt Online Seminar lumberyard
AWS Black Belt Online Seminar lumberyard
Amazon Web Services Japan
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
 
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門
YoshihiroHorizono1
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
Tomoaki Sakatoku
 
App Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデートApp Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデート
Microsoft Azure Japan
 
AWSアカウントを解約して1から再構築した話
AWSアカウントを解約して1から再構築した話AWSアカウントを解約して1から再構築した話
AWSアカウントを解約して1から再構築した話
ryota koyama
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Shotaro Suzuki
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
Amazon Web Services Japan
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
Windows on aws最新情報
Windows on aws最新情報Windows on aws最新情報
Windows on aws最新情報Genta Watanabe
 
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
Atsushi Fukui
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
Kazuki Takai
 
AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16
Amazon Web Services Japan
 
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
Amazon Web Services Japan
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Daiyu Hatakeyama
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
Developer Camp 2012 Japan Fall
 
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介Developers Summit
 
AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜Yuki Hirai
 

Similar to AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ (20)

AWS Black Belt Online Seminar lumberyard
AWS Black Belt Online Seminar lumberyardAWS Black Belt Online Seminar lumberyard
AWS Black Belt Online Seminar lumberyard
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
App Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデートApp Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデート
 
AWSアカウントを解約して1から再構築した話
AWSアカウントを解約して1から再構築した話AWSアカウントを解約して1から再構築した話
AWSアカウントを解約して1から再構築した話
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Windows on aws最新情報
Windows on aws最新情報Windows on aws最新情報
Windows on aws最新情報
 
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16
 
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介
【19-E-6】a360 クラウドプラットフォーム webサービスapiのご紹介
 
AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜
 

More from Amazon Web Services Japan

202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
Amazon Web Services Japan
 
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
Amazon Web Services Japan
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
 

More from Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
 
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
 

AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ