2

Я только начинаю использовать AWS, и я пытаюсь использовать их пример кода here. Я использую dotenv для хранения ключей в качестве переменных окружения. Использование кофе скрипт мой код выглядит следующим образом:Ошибка Amazon AWS: Отсутствуют учетные данные в config node.js

require('dotenv').config() 

express = require 'express' 
router = express.Router() 

AWS = require('aws-sdk') 
AWS.config.region = 'us-west-2' 

s3bucket = new (AWS.S3)(params: Bucket: 'new-bucket-name') 

s3bucket.createBucket -> 
    params = 
    Key: process.env.AWS_ACCESS_KEY_ID 
    Body: 'Hello!' 
    s3bucket.upload params, (err, data) -> 
    if err 
     console.log 'Error uploading data: ', err 
    else 
     console.log 'Successfully uploaded data to myBucket/myKey' 
    return 
    return 

Но я получаю следующее сообщение об ошибке:

message: 'Missing credentials in config', 
    code: 'CredentialsError', 
    errno: 'EHOSTDOWN', 
    syscall: 'connect', 
    address: '169.254.169.254', 
    port: 80, 
    time: 2016-10-13T14:14:03.605Z, 
    originalError: 
    { message: 'Could not load credentials from any providers', 
    code: 'CredentialsError', 
    errno: 'EHOSTDOWN', 
    syscall: 'connect', 
    address: '169.254.169.254', 
    port: 80, 
    time: 2016-10-13T14:14:03.605Z, 
    originalError: 
     { message: 'Missing credentials in config', 
     code: 'CredentialsError', 
     errno: 'EHOSTDOWN', 
     syscall: 'connect', 
     address: '169.254.169.254', 
     port: 80, 
     time: 2016-10-13T14:14:03.599Z, 
     originalError: [Object] } } } 

Как это исправить, я также нужно отправить свой секретный ключ каким-то образом?

UPDATE: установил его с помощью

AWS.config = new AWS.Config(); 
AWS.config.accessKeyId = "accessKey"; 
AWS.config.secretAccessKey = "secretKey"; 

но теперь я получаю эту новую ошибку:

message: 'Access Denied', 
    code: 'AccessDenied', 
    region: null, 
    time: 2016-10-13T14:38:19.651Z, 
    requestId: '958BD7EA261F2DCA', 
    extendedRequestId: 'xuBSmGL/GC5Tx1osMh9tBFIwXMLy15VtJXniwYVGutTcoBJgrCeOLZpQMlliF1Azrkmj1tsAX7o=', 
    cfId: undefined, 
    statusCode: 403, 
    retryable: false, 
    retryDelay: 11.225715031927086 } 

ответ

2

Access Denied звучит как ваша Permissions IAM не настроено правильно. Убедитесь, что пользователь, привязанный к этим учетным данным, может создавать корзины в вашей учетной записи.

Также, как правило, SDK AWS могут считывать ваши фактические переменные ENV, поэтому вам, вероятно, не нужно использовать DotEnv в этом случае. И когда вы вводите код в производственные системы, которые могут работать на EC2 или Lambda, вам действительно нужно использовать профиль IAM, который обрабатывает ваши учетные данные. Так что снова .. DotEnv не нужно.

Смежные вопросы