以下の手順を実行して Lambda 関数を作成します。
1.Lambda コンソールを https://console.aws.amazon.com/lambda/ で開きます。
2.以下のいずれかを行います。
• 初めて Lambda 関数を作成する場合、[Getting Started] ページが表示されます。[Getting Started] の [Create a function] をクリックします。
• Lambda 関数を作成したことがある場合、[Functions] ページの右上隅にある [Create a function] をクリックします。
3.[Create a function] ページでは、[Author from scratch] が選択されていることを確認します。
4.[Basic information] で以下を実行します。
• [Name] には examplecorp_lambda_saas_function と入力します。
• [Runtime] で [Node.js 8.10] を選択します。
5.[Permissions] で、[Choose or create an execution role] の横のアイコンをクリックします。次に、以下を実行します。
• [Execution role] で [Use an existing role] を選択します。
• [Existing role] で、リストから [examplecorp_lambda_saas_role] を選択します。
6.[Create function] を選択します。
7.[Function code] セクションの [index.js] タブに、プレースホルダーコードが表示されます。プレースホルダーコードを削除し、次のコードをコピーしてタブに貼り付けます。
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
const AWS = require('aws-sdk');
const appstream = new AWS.AppStream;
exports.handler = (event, context, callback) => {
if (!event.requestContext.authorizer) { //checks to see if Cognito Authorization has been configured
errorResponse('Authorization has not been configured, please configure an authorizer in API Gateway', context.awsRequestId, callback);
return;
}
const username = event.requestContext.authorizer.claims['cognito:username'];
var params = {
FleetName: '<Fleet-Name>', /* required */
StackName: '<Stack-Name>', /* required */
UserId: username,
Validity: 5
};
createas2streamingurl(params, context.awsRequestId, callback);
};
function errorResponse(errorMessage, awsRequestId, callback) { //Function for handling error messaging back to client
callback(null, {
statusCode: 500,
body: JSON.stringify({
Error: errorMessage,
Reference: awsRequestId,
}),
headers: {
'Access-Control-Allow-Origin': '<origin-domain>', //This should be the domain of the website that originated the request, example: amazonaws.com
},
});
}
function createas2streamingurl(params, awsRequestId, callback) {
var request = appstream.createStreamingURL(params);
request.
on('success', function (response) {
console.log("Success. AS2 Streaming URL created.");
var url = response.data.StreamingURL;
callback(null, {
statusCode: 201,
body: JSON.stringify({
Message: url,
Reference: awsRequestId,
}),
headers: {
'Access-Control-Allow-Origin': '<origin-domain>', //This should be the domain of the website that originated the request, example: amazonaws.com
},
});
}).
on('error', function (response) {
console.log("Error: " + JSON.stringify(response.message));
errorResponse('Error creating AS2 streaming URL.', awsRequestId, callback);
}).
send();
}
8.以下の変数を独自の値に置き換えます。
• <Stack-Name>
• <Fleet-Name>
• <origin-domain>
各パラメータの意味は次のとおりです。
• <Stack-Name> は、ストリーミング URL を作ろうとしているスタックの名前です。
• <Fleet-Name> は、この関数でストリーミング URL を作成しようとしているスタックに関連するフリートの名前です。
• <origin-domain> は、API ゲートウェイにリクエストを送るウェブサイトのドメインです。ここでは、このプロジェクト用に設定した S3 ウェブサイトのフル URL (http://bucket-name.s3-website.region.amazonaws.com) になります。
9.関数を保存して Lambda コンソールを閉じます。