手動インストール
CloudFormationを使わない手動インストール(上級者向け)
このガイドでは、CloudFormationを使わずにLightFile6 Lambdaを手動でインストールする方法を説明します。
このガイドは上級者向けです。通常はCloudFormationを使用したインストールを推奨します。
前提条件
- AWSコンソールまたはCLIへのアクセス
- Lambda、S3、IAMの管理権限
- LightFile6ライセンストークン
Lambda関数パッケージのダウンロード
Lambda関数のzipファイルは、リージョン別のS3バケットで公開されています:
https://lightfile6-deployment-<region>.s3.<region>.amazonaws.com/lambda/<version>/<architecture>/lightfile-lambda.zip例(東京リージョン、arm64、v6.0.1):
curl -O https://lightfile6-deployment-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/lambda/6.0.1/arm64/lightfile-lambda.zip利用可能なリージョン:
ap-northeast-1(東京)ap-northeast-3(大阪)us-west-1(北カリフォルニア)us-west-2(オレゴン)us-east-1(バージニア北部)us-east-2(オハイオ)
アーキテクチャ:
arm64(推奨 - 高性能、低コスト)x86_64
インストール手順
1. IAMロールの作成
Lambda実行用のIAMロールを作成します。
信頼関係ポリシー (trust-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}権限ポリシー (permissions-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::your-image-bucket/*",
"arn:aws:s3:::your-backup-bucket/*"
]
}
]
}IAMロールを作成:
# ロールを作成
aws iam create-role \
--role-name lightfile6-lambda-role \
--assume-role-policy-document file://trust-policy.json
# ポリシーをアタッチ
aws iam put-role-policy \
--role-name lightfile6-lambda-role \
--policy-name lightfile6-permissions \
--policy-document file://permissions-policy.json2. Lambda関数の作成
ダウンロードしたzipファイルを使用してLambda関数を作成します。
AWSコンソール:
- Lambdaコンソールを開く
- 関数の作成をクリック
- 一から作成を選択
- 関数名:
lightfile6-optimizer(任意) - ランタイム:
Amazon Linux 2023 - アーキテクチャ:
arm64またはx86_64 - 実行ロール: 既存のロールを使用 → 先ほど作成したロールを選択
- 関数の作成をクリック
- コードタブで アップロード元 → .zipファイルを選択
- ダウンロードしたzipファイルをアップロード
AWS CLI:
aws lambda create-function \
--function-name lightfile6-optimizer \
--runtime provided.al2023 \
--role arn:aws:iam::YOUR_ACCOUNT_ID:role/lightfile6-lambda-role \
--handler handler \
--zip-file fileb://lightfile-lambda.zip \
--architectures arm64 \
--timeout 45 \
--memory-size 2563. 環境変数の設定
Lambda関数に必要な環境変数を設定します。
最小限の設定:
aws lambda update-function-configuration \
--function-name lightfile6-optimizer \
--environment Variables="{
LICENSE_TOKEN=your-license-token-here,
QUALITY=medium,
ACL=public-read,
LANGUAGE=ja,
LOG_LEVEL=info
}"バックアップを有効化する場合:
aws lambda update-function-configuration \
--function-name lightfile6-optimizer \
--environment Variables="{
LICENSE_TOKEN=your-license-token-here,
QUALITY=medium,
ACL=public-read,
BACKUP_BUCKET=your-backup-bucket,
BACKUP_PREFIX=\${bucket},
BACKUP_ACL=private,
LANGUAGE=ja,
LOG_LEVEL=info
}"主要な環境変数:
LICENSE_TOKEN(必須): ライセンストークンQUALITY: 品質設定 (low/medium/high)ACL: 最適化後の画像のACLBACKUP_BUCKET: バックアップバケット名MIN_SIZE: 最小ファイルサイズ (デフォルト:5kb)MAX_SIZE: 最大ファイルサイズ (デフォルト:3mb)
詳細は環境変数一覧を参照してください。
4. S3バケットの準備
画像保存用のS3バケットを作成します(既存のバケットを使用する場合はスキップ)。
# 画像バケットを作成
aws s3 mb s3://your-image-bucket
# バックアップバケットを作成(オプション)
aws s3 mb s3://your-backup-bucket
# パブリック読み取りを許可する場合(ACL=public-readの場合)
aws s3api put-public-access-block \
--bucket your-image-bucket \
--public-access-block-configuration \
BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false
aws s3api put-bucket-ownership-controls \
--bucket your-image-bucket \
--ownership-controls="Rules=[{ObjectOwnership=ObjectWriter}]"5. Lambda実行権限をS3に付与
S3がLambda関数を呼び出せるように権限を付与します。
aws lambda add-permission \
--function-name lightfile6-optimizer \
--statement-id s3-invoke-permission \
--action lambda:InvokeFunction \
--principal s3.amazonaws.com \
--source-arn arn:aws:s3:::your-image-bucket6. S3イベント通知の設定
画像がアップロードされたときにLambdaを起動するように設定します。
notification-config.json:
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:REGION:ACCOUNT_ID:function:lightfile6-optimizer",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".jpg"
}
]
}
}
},
{
"LambdaFunctionArn": "arn:aws:lambda:REGION:ACCOUNT_ID:function:lightfile6-optimizer",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".jpeg"
}
]
}
}
},
{
"LambdaFunctionArn": "arn:aws:lambda:REGION:ACCOUNT_ID:function:lightfile6-optimizer",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".png"
}
]
}
}
}
]
}イベント通知を設定:
aws s3api put-bucket-notification-configuration \
--bucket your-image-bucket \
--notification-configuration file://notification-config.jsonAWSコンソールでの設定:
- S3コンソールでバケットを開く
- プロパティタブを選択
- イベント通知 → イベント通知を作成
- 名前:
lightfile6-trigger - イベントタイプ: すべてのオブジェクト作成イベント
- 送信先: Lambda関数
- Lambda関数:
lightfile6-optimizer - サフィックスフィルター(オプション):
.jpg,.jpeg,.png
動作確認
1. テスト画像をアップロード
aws s3 cp test-image.jpg s3://your-image-bucket/2. CloudWatchログを確認
# ログストリームを確認
aws logs tail /aws/lambda/lightfile6-optimizer --follow成功時のログ例:
[info] s3://your-image-bucket/test-image.jpg 処理が正常に完了しました3. 最適化結果を確認
# 最適化された画像をダウンロード
aws s3 cp s3://your-image-bucket/test-image.jpg ./optimized-test-image.jpg
# ファイルサイズを比較
ls -lh test-image.jpg optimized-test-image.jpgトラブルシューティング
Lambda関数が実行されない
確認事項:
-
S3イベント通知が正しく設定されているか
aws s3api get-bucket-notification-configuration \ --bucket your-image-bucket -
Lambda実行権限が付与されているか
aws lambda get-policy --function-name lightfile6-optimizer
ライセンスエラー
エラー: "License validation failed"
解決策:
- 環境変数
LICENSE_TOKENが正しく設定されているか確認 - トークン形式が正しいか確認(
username!signature) - トークンの有効期限を確認
aws lambda get-function-configuration \
--function-name lightfile6-optimizer \
--query 'Environment.Variables.LICENSE_TOKEN'権限エラー
エラー: "AccessDenied"
解決策: IAMロールのポリシーで、対象バケットへのアクセスが許可されているか確認。
aws iam get-role-policy \
--role-name lightfile6-lambda-role \
--policy-name lightfile6-permissionsアンインストール
手動でインストールした場合の削除手順:
# 1. S3イベント通知を削除
aws s3api put-bucket-notification-configuration \
--bucket your-image-bucket \
--notification-configuration '{}'
# 2. Lambda関数を削除
aws lambda delete-function --function-name lightfile6-optimizer
# 3. IAMロールを削除
aws iam delete-role-policy \
--role-name lightfile6-lambda-role \
--policy-name lightfile6-permissions
aws iam delete-role --role-name lightfile6-lambda-role
# 4. S3バケットを削除(必要に応じて)
aws s3 rb s3://your-image-bucket --force
aws s3 rb s3://your-backup-bucket --force参考情報
- 環境変数一覧 - 環境変数の詳細
- 画像のアップロードと処理 - 基本的な使用方法
- トラブルシューティング - よくある問題と解決方法
本番環境ではCloudFormationを使用したインストールをお勧めします。手動インストールは、特殊な要件がある場合や既存の環境に組み込む場合に使用してください。