独自の S 3バケットへの移行
項目一覧
重要
最新かつ正確な情報については、常にMongoDB AtlasとAmazon Web Servicesの両方の公式ドキュメントを参照してください。 具体的な手順は、プロジェクトの詳細と使用されるテクノロジーによって異なる場合があります。
S 3に移行
MongoDB Atlas の静的ホスティング サービスを静的コンテンツの API ストアとして のみ 使用し、クライアント アプリケーションをホストしていない場合は、以下の手順に従って、Atlas ホスティングから独自の S 3バケットの使用に移行します。
既存のデータの移行
既存のデータを MongoDB Atlas ホスティングから S 3バケットに移行します。 データ量と特定の要件によっては、MongoDB App Services CLI({3appservices pull --include-hosting
)を使用して からデータをエクスポートし、3 Amazon Web ServicesCLIやAmazon Web Services SDK。
Atlas Function から S 3バケットにアクセス
Atlas Functionから S 3バケットに保存されている静的コンテンツにアクセスできます。 そのためには、次のことを行う必要があります。
Atlas Function との統合
S 3バケットにアクセスするための関数の記述
重要
テストと検証
Atlas Function をテストして、S 3バケット内のオブジェクトに正常にアクセスして操作できることを確認します。 関数が期待どおりに動作し、エラーを正常に処理できることを検証します。
Atlas Function との統合
@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バケットにアクセスするための関数の記述
S 3バケットと対話する MongoDB Atlas 関数を記述します。 これらの関数は、ファイルのアップロード、ファイルのダウンロード、オブジェクトの一覧表示、S 3バケットからのオブジェクトの削除など、さまざまな操作を実行できます。
このガイドでは、いくつかの基本的な例について説明します。 3クライアント コマンド の完全な リストを表示して、S 3バケットを操作する他の方法を検討するとよいでしょう。 の @aws-sdk/client-s 。
Amazon Web Servicesリクエストの認証
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にアップロードします
静的アセットを取得し、S 3にアップロードするには、URL から静的アセットをダウンロードするか、ローカル ファイルとしてアップロードします。
ダウンロードしたコンテンツを S 3にアップロードするには、HTTP ライブラリまたはhttp
やhttps
などの組み込み 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へのローカル アセットのアップロード
ローカル アセットを 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); } });