AWS 文档非常清楚如何删除包版本,好吧。
但是,如何删除包呢?
我上传了一个名称错误的包,我删除了它的唯一版本,现在我可以看到一个没有任何版本的包,但我找不到删除名称错误的包的方法。:(
我在账户 A 中有一个具有管理员权限的 IAM 用户,并arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess附加了一个很好的措施。
账户 A 中的 iam 用户的 arn 为arn:aws:iam::***:user/test-user。
帐户 B 有一个 CodeArtifact 存储库,arn 为arn:aws:codeartifact:***:***:domain/test-repo。该仓库的资源政策为
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***:user/test-user"
},
"Action": "codeartifact:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
运行 AWS CLI 命令时,我使用账户 A 中 IAM 用户的访问密钥。以下命令有效:
$ aws codeartifact get-repository-endpoint --domain test-repo --domain-owner *** --query repositoryEndpoint --output text --repository test --format pypi
Run Code Online (Sandbox Code Playgroud)
结果是
https://test-repo-***.d.codeartifact.***.amazonaws.com/pypi/test/
这表明我的资源策略正在发挥作用(将 翻转Effect为Deny成功会使上述命令失败)。
但是,以下命令
$ aws codeartifact …Run Code Online (Sandbox Code Playgroud) 例如,AWS CodeArtifact 使用有效期为 12 小时的令牌进行身份验证。带有 CodeArtifact 的 maven 的典型设置是:
<servers>
<server>
<id>my-domain--my-repo</id>
<username>aws</username>
<password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
在 settings.xml 中并执行
export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain my-domain --domain-owner 123456789012 --query authorizationToken --output text)
Run Code Online (Sandbox Code Playgroud)
在调用 mvn 之前每 12 小时在终端中执行一次。
我以为我可以:
<servers>
<server>
<id>swifttech--main</id>
<username>aws</username>
<password>${codeartifact.auth.token}</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
在 settings.xml 中,然后有一个
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<providerSelection>2.0</providerSelection>
<properties>
<script>aws codeartifact get-authorization-token --domain my-domain --domain-owner 123456789012 --query authorizationToken --output text</script>
</properties>
<source>
def command = project.properties.script
def process = …Run Code Online (Sandbox Code Playgroud) 我的本地机器上有一些不同的项目。其中一些使用AWS Codeartifact下载AWS Codeartifact中的私有依赖项,而另一些则不使用。使用 AWS Codeartifact 的项目使用 Yarn 管理其依赖项,而我的不使用 AWS Codeartifact 的项目使用 NPM 管理其依赖项。
当我在 NPM 中运行一个简单的命令时,例如:
npm install nanoid
Run Code Online (Sandbox Code Playgroud)
npm 尝试连接到我的 AWS Codeartifact,但出现错误:
Unable to authenticate, need: Bearer realm="domain-npm-repo/npm-repo", Basic realm="domain-npm-repo/npm-repo"
Run Code Online (Sandbox Code Playgroud)
如何配置我的机器以仅将 AWS Codearticaft 用于我想要的项目?
其他配置:
我的机器是 Windows 10,我使用我的凭据在全局安装了 aws-sdk。
我正在尝试使用AWS CodeArtifact来利用私有存储库。那里的说明提到执行aws-clinpm 登录命令。此登录命令从 AWS 获取令牌并将其放置在 users 中.npmrc。
我曾尝试将此登录功能放入preinstall项目的脚本中package.json,但问题是.npmrc仅在此步骤中进行修改,而在继续执行yarn install任务时不会重新加载。
有什么方法可以加载此令牌,yarn同时保持登录/安装过程无缝?
我创建了 AWS CodeArtifact 存储库,使用aws codeartifact get-authorization-token命令获取令牌,并将其正确设置为.m2/settings.xml(我的项目maven用作构建工具和包管理器)。
问题是令牌在 12 小时后过期。这意味着我和所有参与该项目的开发人员必须获取一个新令牌并在settings.xml文件中设置新令牌。对于 ci/cd 服务器也必须这样做,它也需要连接到 CodeArtifact,以便在构建后推送工件。
必须有办法解决这个问题,但不幸的是,我无法找到解决方案。
我们使用 AWS CodeArtifact 来存储我们的 Maven 依赖项。此外,我工作的公司使用临时访问密钥来访问 aws。长话短说,您必须每小时运行一个脚本,使用新密钥更新您的 ~/.aws/credentials。您还需要获取新的 CODEARTIFACT_AUTH_TOKEN 才能访问 CodeArtifact。 https://docs.aws.amazon.com/codeartifact/latest/ug/tokens-authentication.html#env-var
如何让 IntelliJ 获取新的 CODEARTIFACT_AUTH_TOKEN?由于您必须每小时获取一个新的,因此您不能只在设置中进行设置。嗯,当然可以,但是你必须每小时更新一次......
可以自动完成吗?
我需要一个用于我公司的 Python 包的包存储库。我已经设置了 AWS CodeArtifact 存储库并设法发布和安装我的包。
要使pip能够使用此存储库,AWS 建议执行以下操作之一:
aws codeartifact login --tool pip | twine --domain my-domain --domain-owner domain-owner-id --repository my-repo
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我已经使用我的凭证配置了我的 AWS 客户端。不过,我更愿意像这样安装:他们应该能够轻松安装这些软件包,例如通过
pip install --extra-index-url https://repository-name.d.codeartifact.eu-west-1.amazonaws.com/pypi/repository/ package_name
Run Code Online (Sandbox Code Playgroud)
出于两个原因,我希望它无需凭据即可工作:
因此我的问题是: 如何在 VPC(虚拟私有云)中公开/公开地访问 AWS CodeArtifact 存储库,而无需凭证?
用户(通过 VPN)和第 3 方应用程序均已配置为位于同一 VPC 内。
我在 package.json 文件 ( scripts> preinstall) 或 ( scripts> prepare) 中运行此命令:
aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner <123456789> --profile <me>
Run Code Online (Sandbox Code Playgroud)
完整文件:(并<123456789>针对<me>stackoverflow 进行了修改)
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"preinstall": "npm run co:login",
"co:login": "aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner <123456789> --profile <me>",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"uuid": "^3.3.2",
"@my-npm/my-common": "1.0.0" …Run Code Online (Sandbox Code Playgroud) 我需要有关代码工件配置的帮助,每当我尝试通过 maven 部署时,它都会显示错误 [警告] 无法上传校验和 maven-metadata.xml。但工件仍然会在快照中发布,并且状态构建成功。
我做错了什么,任何帮助或指导将不胜感激。
aws-codeartifact ×10
maven ×4
npm ×2
yarnpkg ×2
.npmrc ×1
amazon-iam ×1
aws-cli ×1
build ×1
metadata ×1
node.js ×1
package.json ×1
pip ×1