Как я могу спрятать свой ключ и секрет aws, используя Nuxt JS? - PullRequest
0 голосов
/ 22 июня 2019

Есть ли способ сохранить мои aws в секрете и keyId, используя NuxtJ?Я использую их для загрузки файлов в свои корзины, и, конечно же, я хотел бы скрыть свои учетные данные.Спасибо

Следуя коду, который я использую для загрузки файлов в Amazon S3

async PutAmazonBucket() {
      if (this.selectedFile) { 


        AWS.config.update({
           accessKeyId: "",
         secretAccessKey: "",
         region: ""
       });
        var s3 = new AWS.S3();
        var params = {
          Bucket: "buvketName",
          Key:
            "folder/" +
            Date.now() +
            "_" +
            this.selectedFile.name,
          ContentType: this.selectedFile.type,
          Body: this.selectedFile,
          ACL: "public-read"
        };

        await s3
          .putObject(params, (err, data) => {
            if (err) {
              alert("Error, please try again.");
              this.showProgess = false;
            } else {
              this.editedItem.fileUrl =
                "https://s3.ca-central-1.amazonaws.com/" +
                params.Bucket +
                "/" +
                params.Key;
              this.uploadComplete();
              alert("File uploaded successfully.");
            }
          })
          .on("httpUploadProgress", (progressEvent) => {
            this.uploadPercentage = parseInt(
              Math.round((progressEvent.loaded * 100) / progressEvent.total)
            );
          });
      }
    },

1 Ответ

1 голос
/ 24 июня 2019

Стандартный метод - сохранить .aws/credentials файл в вашем домашнем каталоге. Интерфейс командной строки AWS, а также многие пакеты, которые его используют, будут выглядеть там по умолчанию.

Итак, у вас будет файл ~/.aws/credentials (без расширения) с этой информацией:

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Вы можете сохранить другие менее важные параметры конфигурации в ~/.aws/config:

[default]
region=us-west-2
output=json

Редактировать: Приведенное выше решение не относится к Nuxt. Я делаю предположения, но если вы работаете с этого примера Gulp из документов Nuxt для развертывания на s3 , вы можете просто полностью удалить блок credentials, если они хранятся в ~/.aws/.


Редактировать 2: для уточнения, если используется профиль по умолчанию (см. Выше), интерфейс командной строки AWS будет искать ваши учетные данные по умолчанию. Вам не нужно ссылаться на них вообще в вашем сценарии. Но если по какой-то причине он жалуется, вы можете явно установить его в вашем скрипте развертывания с помощью:

var credentials = new AWS.SharedIniFileCredentials({profile: 'default'});
AWS.config.credentials = credentials;

Этот метод обычно используется для указания профиля, отличного от значения по умолчанию, поскольку вам не нужно указывать значение по умолчанию. Например, если у вас есть личная учетная запись AWS и рабочая учетная запись AWS, вы можете сохранить свои рабочие учетные данные в тех же ~/.aws/credentials файлах с другой записью для [work] и заменить {profile: 'default'} на {profile: 'work'} в своем сценарии развертывания.


Редактировать 3: Выше предполагается, что вы развертываете на s3 с вашего локального компьютера. Если сервер будет загружать файлы вместо этого, вы можете установить свои учетные данные в качестве переменных среды. За герою :

$ heroku config:set AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=yyy AWS_REGION=zzz

А затем получите доступ к ним в вашем скрипте загрузки, как вы были:

AWS.config.update({
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    region: proccess.env.AWS_REGION
});

Управление конфигурационными переменными в Heroku:

Всякий раз, когда вы устанавливаете или удаляете конфигурационную переменную любым способом, ваше приложение перезапускается и создается новый выпуск.

Значения конфигурации var являются постоянными - они остаются на месте при развертывании и перезапуске приложения. Если вам не нужно изменить значение, вам нужно установить его только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...