gpt4 book ai didi

javascript - AWS Amplify JavaScript Gitpod 自动设置

转载 作者:行者123 更新时间:2023-12-02 02:02:00 27 4
gpt4 key购买 nike

我正在尝试使用 Gitpod 设置 AWS Amplify JavaScript 项目,这样当我启动新工作区时,我不必手动执行 amplify-cli 步骤(添加IAM 用户,生成 aws-exports.js 文件等)。

我已经成功install到目前为止,机器上的 aws-cliamplify-cli (我将其添加到任务初始化时的 .gitpod.yml 文件中)

$ npm install @aws-amplify/cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

这样我就可以添加

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2

环境变量为gitpod variables ,但是当运行例如 amplify pull 时,我看不到 [default] 用户,就像使用本地设置运行它时通常看到的那样。

最佳答案

我已经让它工作了,首先我为 amplify 添加了这些环境变量使用 Gitpod account settings 设置:

AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_DEFAULT_REGION=us-west-2
AWS_AMPLIFY_PROJECT_NAME=headlessProjectName
AWS_AMPLIFY_APP_ID=amplifyServiceProjectAppId

前三个是 IAM 用户凭证和配置,后两个是 Amplify 特定的,可以在 Amplify 项目的 AWS 控制台内找到。

之后,我创建了一个 Dockerfile用于 Gitpod 自定义 Docker 镜像(如 @Pauline 建议)和创建 ~/.aws 的 bash 脚本配置文件并运行 amplify pull在 headless 模式下。

.gitpod.dockerfile

FROM gitpod/workspace-full

# install aws-cli v2
RUN sudo curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& sudo ./aws/install

# install amplify-cli
RUN sudo curl -sL https://aws-amplify.github.io/amplify-cli/install | bash && $SHELL

这将预安装 aws-cliamplify-cli在 docker 镜像上,以便它们可以在工作区中使用。另外不要忘记将 docker 配置添加到 .gitpod.yml 的顶部文件:

.gitpod.yml

image:
file: .gitpod.Dockerfile

此时,我正在设置 Amplify,无需手动选择 amplify-cli启动新工作区时的选项。借助开头指定的环境变量,神奇的事情发生在自定义 bash 脚本中:

amplify-pull.bash

#!/bin/bash
set -e
IFS='|'

# Specify the headless amplify pull parameters
# https://docs.amplify.aws/cli/usage/headless/#amplify-pull-parameters
VUECONFIG="{\
\"SourceDir\":\"src\",\
\"DistributionDir\":\"dist\",\
\"BuildCommand\":\"npm run-script build\",\
\"StartCommand\":\"npm run-script serve\"\
}"
AWSCLOUDFORMATIONCONFIG="{\
\"configLevel\":\"project\",\
\"useProfile\":false,\
\"profileName\":\"default\",\
\"accessKeyId\":\"$AWS_ACCESS_KEY_ID\",\
\"secretAccessKey\":\"$AWS_SECRET_ACCESS_KEY\",\
\"region\":\"$AWS_DEFAULT_REGION\"\
}"
AMPLIFY="{\
\"projectName\":\"$AWS_AMPLIFY_PROJECT_NAME\",\
\"appId\":\"$AWS_AMPLIFY_APP_ID\",\
\"envName\":\"dev\",\
\"defaultEditor\":\"code\"\
}"
FRONTEND="{\
\"frontend\":\"javascript\",\
\"framework\":\"vue\",\
\"config\":$VUECONFIG\
}"
PROVIDERS="{\
\"awscloudformation\":$AWSCLOUDFORMATIONCONFIG\
}"

# Create AWS credential file inside ~/.aws
mkdir -p ~/.aws \
&& echo -e "[default]\naws_access_key_id=$AWS_ACCESS_KEY_ID\naws_secret_access_key=$AWS_SECRET_ACCESS_KEY" \
>> ~/.aws/credentials

# Create AWS config file ~/.aws
echo -e "[default]\nregion=$AWS_DEFAULT_REGION" >> ~/.aws/config

# Run amplify pull in Headless mode,
# this also generates thw aws-exports.js file inside /src
amplify pull \
--amplify $AMPLIFY \
--frontend $FRONTEND \
--providers $PROVIDERS \
--yes

我使用 Vue 作为前端示例,因此这些值需要根据项目类型进行更改。其余参数非常简单,有关 headless 模式的更多信息可以找到 here 。我还创建了 aws config files之前amplify pull命令如前所述。

这就是最终的.gitpod.yml文件看起来像

.gitpod.yml

image:
file: .gitpod.dockerfile

tasks:
- name: Amplify pull dev
command: |
bash amplify-pull.bash
gp sync-done amplify

- name: Install npm packages, run dev
init: yarn install
command: |
gp sync-await amplify
yarn serve

ports:
- port: 8080
onOpen: open-preview

我还在等待 Amplify pull 完成,然后再使用 gp sync 运行开发服务器.

关于javascript - AWS Amplify JavaScript Gitpod 自动设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com