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

السؤال

نشر

أحتاج إلى تحميل بعض الملفات إلى 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...