据我所知,我可以使用ImportValue 来引用Resources.
NetworkInterfaces:
- GroupSet:
- Fn::ImportValue:
Fn::Sub: "${NetworkStackNameParameter}-SecurityGroupID"
AssociatePublicIpAddress: 'true'
DeviceIndex: '0'
DeleteOnTermination: 'true'
SubnetId:
Fn::ImportValue:
Fn::Sub: "${NetworkStackNameParameter}-SubnetID"
Run Code Online (Sandbox Code Playgroud)
不过这个功能好像不能用Parameters
Parameters:
VPC:
Description: VPC ID
Type: String
Default:
Fn::ImportValue:
!Sub "${NetworkStackNameParameter}-VPC"
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的方式,会得到错误:
调用 CreateChangeSet 操作时发生错误 (ValidationError):模板格式错误:每个默认成员必须是字符串。
无论如何要解决吗?因为同一个vpc id、子网id、安全组Id,不会只用在一个地方。
所以我不得不放弃:
- 在您的 AWS CloudFormation 模板中,确认参数部分不包含任何内部函数。
https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-template-validation/
我已经通过 ArgoCD 成功部署了应用程序,并且可以通过其入口 url 访问它
应用程序使用带有最新标签的图像名称,例如
image: <private_registry>/app_1_service:latest
Run Code Online (Sandbox Code Playgroud)
我还管理同一标签上的其他标签latest,例如image:<commit_id> or image:<1.0.xxx>
现在,开发人员将更新代码,提交更改后,gitlab 管道会自动运行并构建新映像并覆盖以latest使用其他标签进行标记并推送到私有 docker 注册表
那么 ArgoCD 的下一步是什么?
argocd 如何知道应用程序已更改,需要重新部署,以及image:latest需要再次拉取?
获取输出为
{
ARN: "arn:aws:secretsmanager:us-east-2:xxxx:secret:team_dev-Xhzkt6",
CreatedDate: 2018-07-05 06:50:07 +0000 UTC,
Name: "team_dev",
SecretString: "{\"password\":\"test\"}",
VersionId: "6b65bfe4-7908-474b-9ae6-xxxx",
VersionStages: ["AWSCURRENT"]
}
Run Code Online (Sandbox Code Playgroud)
尝试使用键获取值作为映射 SecretString
d.Set("secret_string", output.SecretString)
Run Code Online (Sandbox Code Playgroud)
如何将其作为Schema TypeMap 获取?
使用jq,我可以轻松获得它,但不确定如何在 golang 中执行此操作。
谢谢,@mkopriva
在 aws sdk (github.com/aws/aws-sdk-go/service/secretsmanager/api.go) 中,output (GetSecretValueOutput)定义为type:"structure"
type GetSecretValueOutput struct {
_ struct{} `type:"structure"`
Run Code Online (Sandbox Code Playgroud)
并再次感谢提供测试代码,我会尝试一下。
package main
import (
"encoding/json"
"fmt"
)
func main() {
secretString := "{\"password\":\"test\"}"
sec := map[string]interface{}{}
if err := json.Unmarshal([]byte(secretString), &sec); err != nil {
panic(err)
}
fmt.Println(sec)
} …Run Code Online (Sandbox Code Playgroud) 在现有的 Nodejs 项目上工作时,其中一个包不在我的控制范围内,例如public-package. 当我尝试发布新版本时,我必须使用新的包名称进行部署,例如my-package.
例如,
{
...
"dependencies": {
"public-package": "1.0.123",
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
在源代码中,有很多行,例如require('public-package')
那么我如何使用我的包,在npm install不更改代码的情况下直接将其重命名为require('public-package')to require('my-package')?
例如
{
...
"dependencies": {
"public-package": "my-package@1.0.10", # <= how to make this work?
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来让它像上面的代码一样工作吗?
我已经开始在大堂ci设置一个新的团队,可以登录Bitbucket用户.
fly set-team -n main \
--basic-auth-username myuser \
--basic-auth-password xxxx \
--generic-oauth-display-name bitbucket \
--generic-oauth-client-id xxxx \
--generic-oauth-client-secret xxxx \
--generic-oauth-auth-url https://bitbucket.org/site/oauth2/authorize \
--generic-oauth-token-url https://bitbucket.org/site/oauth2/access_token
Run Code Online (Sandbox Code Playgroud)
成功设置它的关键是,bitbucket中的OAuth使用者的回调网址只需要大厅ci网站(/auth/oauth/callback在回调网址中没有)
现在我发现了一个问题.任何用户(甚至是bitbucket云中新注册的免费用户)都可以登录我的大厅ci服务器.
经过一番研究,我得到了这个
通用oAuth
--generic-oauth-*标志配置通用oAuth提供程序,默认情况下不会对单个用户登录执行任何其他验证.它应该只以这种方式与内部auth系统一起使用.例如,如果它用于配置Google或Twitter oAuth,它将允许互联网上的每个人创建管道.它会非常慷慨.如果需要验证,请确保使用--generic-oauth-scope标志.
那么有没有办法阻止未经授权的bitbucket云用户登录,这应该只限于我的组织?与github的选项相同--github-auth-organization=ORG
我尝试添加--generic-oauth-scope concourse.main但总是得到错误:
failed to verify token
Run Code Online (Sandbox Code Playgroud)
我还阅读了关于Bitbucket Cloud的OAuth - Scopes并尝试使用大多数范围,例如
--generic-oauth-scope account
Run Code Online (Sandbox Code Playgroud)
仍然得到相同的错误.
我应该把什么放在范围内?
据我所知,如果我们需要nofile在Linux系统中调整“打开文件”(软和硬),我们需要运行命令ulimit或在相关配置文件中进行设置才能永久获得设置。但我对主机中运行的容器的设置有点困惑
例如,如果 Linux 操作系统将ulimitnofile 设置为 1024(软)和硬(4096),并且我使用 运行 docker --ulimit nofile=10240:40960,容器是否可以比其主机使用更多的 nofile?
在我的环境中,当前运行的泊坞窗设置,
我发现该应用程序可以运行大约 100K 个打开的文件,然后崩溃。这怎么理解呢?
真正的限制是什么?
lambda 函数大小超过 4096 个字符,因此我无法将 lambda 函数部署为 cloudformation 模板中的内联代码。
压缩文件
您的源代码最多可以包含 4096 个字符。对于 JSON,必须使用反斜杠转义引号和特殊字符,例如换行符 (\n)。
我必须先将其压缩,上传到 s3 存储桶,在 cloudformation 中设置 s3 存储桶和文件详细信息,然后部署它。
我找不到一种使用一个命令进行部署的方法。如果我更新 lambda 代码,我必须重复上述步骤
但借助 AWS SAM 或无服务器框架,他们可以部署 lambda 函数而无需内联代码。
唯一的问题是,AWS SAM 或无服务器框架默认创建 API 网关,我不需要创建它
对我有什么解决方案或建议吗?
SAM 支持在不创建 API 网关的情况下部署 lambda 函数。所以问题解决了
aws-cloudformation aws-lambda serverless-framework serverless aws-sam
正如我们所知,helm 图表是由带有变量和参考值的模板制作的values.yml。我想查看最终的 heml 图表,但没有打印或输出功能。
例如,在无服务器框架中,我可以运行sls print以获得最终的serverless.yml
但我在 中找不到类似的命令heml,例如
helm print <chart_name> -f values.yml
Run Code Online (Sandbox Code Playgroud) 我有一个dict数组
tag_list = [{'Key': 'backup', 'Value': 'true'},
{'Key': 'backup_daily', 'Value': '7'}]
Run Code Online (Sandbox Code Playgroud)
我想将它转换为变量,例如:
tag_backup = 'true'
tag_backup_daily = '7'
Run Code Online (Sandbox Code Playgroud)
有什么简单的方法吗?
如果不需要将其转换为变量,还有其他更好的方法直接引用这些键/值吗?
我想做的最好的是参考以下方式.
tag_list['backup'] = "true"
tag_list['backup_daily'] = "7"
Run Code Online (Sandbox Code Playgroud)
感谢@Lev Zakharov的回答,我采取了以下方式.
>>> new_list = {x['Key']: x['Value'] for x in tag_list}
>>> new_list['backup']
'true'
>>> new_list['backup_daily']
'7'
Run Code Online (Sandbox Code Playgroud) 我是mac用户,曾经用来运行pip install --user,但是最近之后brew update,我发现有些奇怪的事情,也许是相关的。
无论我尝试什么,软件包始终会安装到 ~/Library/Python/2.7/lib/python/site-packages
这是我运行的命令。
$ python -m site --user-site
~/Library/Python/2.7/lib/python/site-packages
$ pip install --user -r requirements.txt
$ PYTHONUSERBASE=. pip install --user -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
那应该是什么问题呢?
我用于lambda拉链包装
如果使用Mac OS X,并且使用Homebrew安装了Python(请参阅Homebrew),则上述命令将不起作用。一个简单的解决方法是在/ path / to / project-dir中添加具有以下内容的setup.cfg文件。
[install]
prefix=
Run Code Online (Sandbox Code Playgroud)
https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html