Lambda(PHP)からS3にPUTする方法

Lambda(PHP)からS3にPUTする方法

前提

項目 バージョン
OS Ubuntu 20.04.4 LTS
PHP PHP 7.4.3-4ubuntu2.17 (cli) (built: Jan 10 2023 15:37:44) ( NTS )

Composerインストール済みであること

$ sudo apt update
$ sudo apt install -y php-curl
$ sudo apt install -y php7.4-xml
$ sudo apt install -y composer

aws sdkインストール

composerでaws sdkをインストールします。

$ composer require bref/bref
$ vendor/bin/bref init
 What kind of lambda do you want to create? (you will be able to add more functions later by editing `serverless.yml`) [Web application]:
  [0] Web application
  [1] Event-driven function
 > 1
$ composer require aws/aws-sdk-php

index.php

index.phpを修正します。

<?php
require __DIR__ . '/vendor/autoload.php';

use Aws\S3\S3Client;  
use Aws\Exception\S3Exception;

return function ($event) {
    $client = new S3Client([
        'version' => '2006-03-01',
        'region' => 'ap-northeast-1',
    ]);
    try {
        $result = $client->putObject([
            'Bucket' => '<バケット名>', // バケット名
            'Key' => 'temp/aaa.json', // オブジェクトキー
            'SourceFile' => './sample.json'
        ]);
    } catch (S3Exception $e) {
        $error = $e->getMessage();
        var_dump($error);
        exit(500);
    }
    var_dump($result);
    return "ok";
};

SourceFileではファイルパスを指定します。index.phpと同じ場所にsample.jsonを配置しているので./sample.jsonとしています。

デプロイします。

$ sls deploy

Lambda実行すると、S3バケットにPUTされていることが確認できます。

$ aws s3 cp s3://<バケット名>/temp/aaa.json - 
{
    "name":"takahashi",
    "age": 20
}

参考サイト

Installation — AWS SDK for PHP documentation
Creating and using Amazon S3 buckets with the Amazon SDK for PHP Version 3 - Amazon SDK for PHP
Describes how to use Amazon S3 buckets with the Amazon SDK for PHP Version 3.

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました