Docs Menu
Docs Home
/ /
Atlas App Services
/ /

独自の S 3バケットへの移行

項目一覧

  • S 3に移行
  • S 3バケットの作成
  • 既存のデータの移行
  • アプリケーション コードの更新
  • Atlas App Services ホスティングをシャットダウンする
  • Atlas Function から S 3バケットにアクセス
  • Atlas Function との統合
  • S 3バケットにアクセスするための関数の記述

重要

最新かつ正確な情報については、常にMongoDB AtlasとAmazon Web Servicesの両方の公式ドキュメントを参照してください。 具体的な手順は、プロジェクトの詳細と使用されるテクノロジーによって異なる場合があります。

MongoDB Atlas の静的ホスティング サービスを静的コンテンツの API ストアとして のみ 使用し、クライアント アプリケーションをホストしていない場合は、以下の手順に従って、Atlas ホスティングから独自の S 3バケットの使用に移行します。

1

まだ行っていない場合は、 Amazon Web Servicesアカウントに独自の S3 バケットを設定します。 アクセス権限や暗号化オプションなど、要件に応じてバケット設定を構成します。

2

既存のデータを MongoDB Atlas ホスティングから S 3バケットに移行します。 データ量と特定の要件によっては、MongoDB App Services CLI({3appservices pull --include-hosting )を使用して からデータをエクスポートし、3 Amazon Web ServicesCLIやAmazon Web Services SDK。

3

MongoDB Atlas ホスティングの代わりに S 3バケットでやり取りするようにアプリケーション コードを変更します。 これには、App Services CLI コマンドを使用して処理する更新コードが含まれます。

4

ファイルが S 3バケットに正常に配置されたことを確認したら、Atlas App Services アプリからホストされているファイルを削除します。 また、Atlas App Services でのドメインのホストは、 12 、 2025以降、実行されなくなります。

Atlas Functionから S 3バケットに保存されている静的コンテンツにアクセスできます。 そのためには、次のことを行う必要があります。

  1. Atlas Function との統合

  2. S 3バケットにアクセスするための関数の記述

重要

テストと検証

Atlas Function をテストして、S 3バケット内のオブジェクトに正常にアクセスして操作できることを確認します。 関数が期待どおりに動作し、エラーを正常に処理できることを検証します。

@aws-sdk外部依存関係を使用して S 3にアップロードします。 Atlas App Services は依存関係を自動的に変換し、ほとんどのデフォルトの Node.js モジュールもサポートします。

外部依存関係をインポートして使用するには、まずアプリケーションに依存関係を追加する必要があります。 名前を使用してパッケージを追加するか、依存関係のディレクトリをアップロードできます。

重要

Amazon Web Services SDK のサポート

App Services はまだ、 Amazon Web Services SDK のバージョン 3 をサポートしていません。 npm モジュールを指定する場合、バージョン2 SDK を使用

S 3バケットと対話する MongoDB Atlas 関数を記述します。 これらの関数は、ファイルのアップロード、ファイルのダウンロード、オブジェクトの一覧表示、S 3バケットからのオブジェクトの削除など、さまざまな操作を実行できます。

このガイドでは、いくつかの基本的な例について説明します。 3クライアント コマンド の完全な リストを表示して、S 3バケットを操作する他の方法を検討するとよいでしょう。 の @aws-sdk/client-s 。

Amazon Web Servicesリクエストを認証するには、アクセスキーIDと シークレット アクセスキー をとして保存します。 その後は関数内でアクセスし、SDK に渡すことができます。

exports = async function() {
// require calls must be in exports function
const { S3Client, PutObjectCommand, GetObjectCommand } = require("@aws-sdk/client-s3");
const s3Client = new S3Client({
region: "us-east-1", // replace with your AWS region
credentials: {
accessKeyId: context.values.get("awsAccessKeyId"),
secretAccessKey: context.values.get("awsSecretAccessKey"),
},
});
const putCommand = new PutObjectCommand({
Bucket: "bucketName",
Key: "keyName",
Body: EJSON.stringify({ hello: "world" }),
});
const putResult = await s3Client.send(putCommand);
const getCommand = new GetObjectCommand({
Bucket: "bucketName",
Key: "keyName",
});
const getResult = await s3Client.send(getCommand);
}

静的アセットを取得し、S 3にアップロードするには、URL から静的アセットをダウンロードするか、ローカル ファイルとしてアップロードします。

ダウンロードしたコンテンツを S 3にアップロードするには、HTTP ライブラリまたはhttphttpsなどの組み込み Node.js モジュールを使用して、 URL から静的アセットをダウンロードします。 ダウンロードした内容を S 3にアップロードできます。

以下は、 axiosライブラリを使用したアセットのダウンロードの例です。

const axios = require('axios');
const stream = require('stream');
const { promisify } = require('util');
// Promisify pipeline function to pipe streams
const pipeline = promisify(stream.pipeline);
async function uploadAssetToS3() {
try {
const response = await axios.get('URL_OF_YOUR_STATIC_ASSET', { responseType: 'stream' });
const uploadParams = {
Bucket: 'YOUR_BUCKET_NAME',
Key: 'YOUR_OBJECT_KEY',
Body: response.data
};
// Upload the static asset to S3
await s3.upload(uploadParams).promise();
console.log('Static asset uploaded successfully');
} catch (error) {
console.error('Error uploading static asset:', error);
}
}
uploadAssetToS3();

ローカル アセットを S 3にアップロードするには、次のコード スニペットを使用します。

const uploadParams = {
Bucket: 'YOUR_BUCKET_NAME',
// Specify the name/key for the object in the bucket (usually the file name)
Key: 'YOUR_OBJECT_KEY',
// Provide the local file to be uploaded
Body: 'STATIC_ASSET_CONTENT',
};
// Upload the static asset to S3
s3.upload(uploadParams, (err, data) => {
if (err) {
console.error('Error uploading static asset:', err);
} else {
console.log('Static asset uploaded successfully:', data.Location);
}
});

戻る

レンダリングへの移行