Function Compute は、Object Storage Service (OSS) にアップロードされたファイルの解凍を自動化できます。指定された解凍ルールに一致する ZIP ファイルがアップロードされると、事前定義された Function Compute プロセスが自動的にトリガーされます。解凍後、抽出されたファイルは OSS 内の指定されたディレクトリにアップロードされます。
使用上の注意
文字化けや解凍の中断を避けるため、ファイルやフォルダの命名には UTF-8 または GB2312 エンコーディングを使用することをお勧めします。
アーカイブファイルまたはコールドアーカイブファイルの場合は、解凍する前にファイルをリストアする必要があります。
ZIP パッケージの解凍に許容される最大時間は 2 時間です。この制限時間を超えた解凍タスクは失敗します。
解凍の失敗を避けるため、ZIP パッケージ内の単一ファイルのサイズは 1 GB 未満にしておくことをお勧めします。
関数のタイムアウトは 2 時間以上 24 時間以下に設定することをお勧めします。
関数は、関連付けられている OSS バケットと同じリージョンに作成することをお勧めします。
前提条件
関数計算がアクティブ化されていること。詳細については、「前提条件」をご参照ください。
OSS がアクティブ化されており、バケットが作成されていること。詳細については、「OSS コンソールを使用して開始する」をご参照ください。
手順
ステップ 1: 関数を作成する
関数計算コンソール にログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、[関数を作成] をクリックします。
[関数を作成] ページで、関数作成の方法を選択し、必要な項目を設定して、[作成] をクリックします。
主要な設定項目の概要を以下に示します。その他の項目の詳細については、「関数を作成する」をご参照ください。
ランタイム: 関数のランタイムとして Python 3.10 を選択します。
関数のロール: 既存のロールを選択するか、新しいロールを作成して、関数が OSS バケットにアクセスするために必要な権限を持っていることを確認します。このロールには AliyunOSSFullAccess ポリシーをアタッチできます。
作成した関数の [関数の詳細] ページで、[コード] タブをクリックします。[コード] タブで、コードファイルを作成し、コードエディタでコードを記述して、[デプロイ] をクリックします。
サンプルコードは以下のとおりです。
index.pyファイルhelper.pyファイルossZipfile.pyファイル
ステップ 2: OSS トリガーを作成する
[関数の詳細] ページで、[構成] タブを選択し、左側のナビゲーションウィンドウから [トリガー] タブを選択します。
[トリガー] ページで、[トリガーを作成] をクリックします。[トリガーを作成] パネルで、OSS トリガータイプを選択し、必要に応じて設定を構成して、[OK] をクリックします。
以下に、いくつかの主要な項目の構成の概要を示します。その他の項目の詳細については、「ネイティブ OSS トリガーを構成する」をご参照ください。
バケット名: 作成したバケットの名前を選択します。
オブジェクトプレフィックス: この例では、
srcを使用します。オブジェクトサフィックス: この例では、
zipを使用します。トリガーイベント: この例では、
oss:ObjectCreated:PutObject, oss:ObjectCreated:PostObject, oss:ObjectCreated:CompleteMultipartUpload, oss:ObjectCreated:PutSymlinkを使用します。ロール名: ロールを選択し、関数を呼び出すために必要な権限を持っていることを確認します。AliyunFCFullAccess ポリシーをアタッチしてフルアクセスを許可できます。
トリガーが作成されると、[トリガー] ページで表示できます。
ステップ 3: テストと検証
構成は次の 2 つの方法でテストできます。
方法 1: OSS コンソールから手動でファイルをアップロードする
Object Storage Service コンソール にログインします。ステップ 2: OSS トリガーを作成する で選択したバケットの src ディレクトリに、code.zip などの ZIP ファイルをアップロードします。アップロードが完了すると、関数が自動的にトリガーされ、ZIP ファイルがバケットのルートディレクトリに解凍されます。
方法 2: トリガーのイベントパラメータを構成する
この方法では、構成後に [関数のテスト] をクリックして関数を手動でトリガーする必要があることに注意してください。次に、Object Storage Service コンソール にログインして、ターゲットバケットのファイルリストを確認し、ZIP ファイルが正常に解凍されたことを確認します。詳細な手順は以下のとおりです。
「関数詳細」ページで、[コード] タブをクリックし、[関数をテスト] の横にある
アイコンをクリックして、ドロップダウンリストから [テストパラメーターの設定] を選択します。[テストパラメータの構成] パネルで、[イベントテンプレート] を選択し、[イベント名] とイベントコンテンツを入力して、[OK] をクリックします。
サンプルイベントは以下のとおりです。
{ "events": [ { "eventName": "ObjectCreated:PutObject", "eventSource": "acs:oss", "eventTime": "2023-08-13T06:45:43.000Z", "eventVersion": "1.0", "oss": { "bucket": { "arn": "acs:oss:cn-hangzhou:10343546824****:bucket****", "name": "bucket****", "ownerIdentity": "10343546824****" }, "object": { "deltaSize": 122539, "eTag": "688A7BF4F233DC9C88A80BF985AB****", "key": "src/test.zip", "size": 122539 }, "ossSchemaVersion": "1.0", "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****" }, "region": "cn-hangzhou", "requestParameters": { "sourceIPAddress": "140.205.XX.XX" }, "responseElements": { "requestId": "58F9FF2D3DF792092E12044C" }, "userIdentity": { "principalId": "10343546824****" } } ] }イベントオブジェクトパラメータの詳細については、「ステップ 2: (オプション) 入力パラメータを構成する」をご参照ください。
重要上記のイベントコンテンツは例として提供されています。必要に応じてパラメータを調整してください。指定されたファイル (この例では
src/test.zipファイル) が指定されたバケットに存在することを確認してください。そうでない場合、関数はトリガーされないか、実行が失敗します。実際の環境に合わせて変更する必要があるパラメータは以下のとおりです。
bucket.arn: このパラメータには、acs:oss:<region>:<your_account_id>:<your_bucket>形式を使用します。<region>は関数を作成したときに選択したリージョン、<your_account_id>は Alibaba Cloud アカウント ID、<your_bucket>はそのリージョンに作成したバケットの実際の名前に置き換えます。Alibaba Cloud アカウント ID は、関数計算コンソール の [概要] ページの [参照] セクションにあります。bucket.name: 関数と同じリージョンに作成したバケットの実際の名前に置き換えます。bucket.ownerIdentity: Alibaba Cloud アカウント ID に置き換えます。object.key: 前述のバケットにアップロードされたファイルの名前に置き換えます。region: 関数を作成したときに選択したリージョンに置き換えます。userIdentity.principalId: Alibaba Cloud アカウント ID に置き換えます。
[コード] タブの [関数のテスト] をクリックして、テストを実行します。
関数が正常に実行された後、Object Storage Service コンソール にログインし、指定されたバケット内のターゲット ZIP ファイル (この例では
src/test.zipファイル) が解凍されているかどうかを確認します。詳細な手順については、「OSS コンソールを使用してオブジェクトを照会する」をご参照ください。
テスト後、このアプリケーションが今のところ不要な場合は、不要な課金を避けるため、アプリケーションと関連リソースを必ず削除してください。
参照
OSS トリガーでできることの詳細については、「OSS トリガーの概要」をご参照ください。
関数計算を使用して OSS からファイルをパッケージ化してダウンロードする方法については、「関数計算を使用して複数のオブジェクトをパッケージとしてダウンロードする」をご参照ください。