اذهب إلى المحتوى
  • 0

كيفية إعداد بيانات اعتماد AWS-SDK في NextJS

عبد النور محمد

السؤال

أحتاج إلى تحميل بعض الملفات إلى S3 من تطبيق NextJs. فتعيين متغيرات البيئة يجب أن يعمل ولكنه لا يعمل عند تعيين  accessKeyID و secretKey.

next.config.js

module.exports = {
  env: {
    AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID
  },
  serverRuntimeConfig: {
    AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY
  }
}

config/index.js

export default {
  awsClientID: process.env. AWS_ACCESS_KEY_ID,
  awsClientSecret: process.env.AWS_SECRET_ACCESS_KEY
}
import AWS from 'aws-sdk'
import config from '../config'

AWS.config.update({
  accessKeyId: config.awsClientID,
  secretAccessKey: config.awsClientSecret,
});

const S3 = new AWS.S3()

const params = {
  Bucket: "bucketName",
  Key: "some key",
  Body: fileObject,
  ContentType: fileObject.type,
  ACL: 'public-read'
}

await S3.upload(params).promise()

كتابة بيانات الاعتماد مباشرة فوق تعمل دون مشاكل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لكي تجعل المفتاح AWS_ACCESS_KEY_ID قبل للقراءة زمن التشغيل أي runtime variable يجب تعديل الضبط لديك لأنه الآن يعمل وفق  build time variable وذلك بإضافة الإعدادات ل serverRuntimeConfig

// سوف نستبدل هذه 
env: {
    AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID
  },


// بهذه
module.exports = {
  serverRuntimeConfig: {
    AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID
  }
}

وتأكد من ضبط  aws.config.update حيث أن هيكليته لديك غير مطابقة للتوثيق

const aws = require('aws-sdk')

aws.config.update({
  'credentials': {
     'accessKeyId': process.env.AWS_ACCESS_KEY_ID_MYAPP,
     'secretAccessKey': process.env.AWS_SECRET_ACCESS_KEY_MYAPP
    },
  'region': process.env.AWS_REGION_MYAPP,
    'bucketname': process.env.AWS_BUCKET_NAME
  // (...)
})

// New S3 class
const s3 = new aws.S3()

module.exports = (req, res) => {
  // (...)
}

توثيق: AWS SDK Environment Variables

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...