我正在使用 aws codebuild,它工作正常,我只有一个分支 master,并且构建正在从代码提交存储库的 master 分支获取代码,但突然构建失败并出现错误“CLIENT_ERROR:未找到主要的参考增量”源和源版本”。
这是我的构建规范文件代码
version: 0.2
phases:
install:
commands:
- python -V
- node -v
- npm install serverless -g
- sls plugin install -n serverless-python-requirements
- npm install serverless-pseudo-parameters
- npm install --save-dev serverless-step-functions
build:
commands:
- SLS_DEBUG=* sls deploy --stage dev --region us-east-2
Run Code Online (Sandbox Code Playgroud)
有没有办法让 ECS 任务能够获取其部署位置的 EC2 元数据?
从ec2 实例元数据的 AWS 文档中,当我位于 ec2 实例本身内部时,我可以检索 EC2 实例元数据。我对获取实例 ID更感兴趣,可以通过命令来实现
curl http://169.254.169.254/latest/meta-data/instance-id
Run Code Online (Sandbox Code Playgroud)
只有当我直接转到 ec2 实例并执行查询/命令时才能实现这一点,但是如果我想在 EC2 实例上运行的 ECS 任务中获取 ec2 元数据,这将如何实现?根据任务元数据的AWS文档,我只能获取ECS任务本身的详细信息,但无法获取任务运行时的ec2元数据。
这可能吗?
设置:
我"errorMessage": "An error occurred (403) when calling the HeadObject operation: Forbidden"在尝试打电话时收到消息s3.download_file(请参阅下面的代码)。
我看过很多帖子,但似乎没有一个是从 AWS Lambda 调用的,而这正是我的问题所在。
我的代码在我的机器上本地运行,所以我猜测问题涉及 Lambda。这个Lambda函数最终会被S3事件触发,但在测试过程中,它不起作用。
我的 IAM 用户拥有对 S3 和 Lambda 的完全访问权限。
AWS Lambda函数代码:
import json
import boto3
import logging
log = logging.getLogger()
log.setLevel(logging.INFO)
s3 = boto3.client('s3')
def lambda_handler(event, context):
document_name = event['Records'][0]['s3']['object']['key']
bucket = event['Records'][0]['s3']['bucket']['name']
log.info('Performing stuff on {}/{}'.format(bucket, document_name))
# download the file
s3.download_file(
Bucket=bucket,
Key=document_name,
Filename=document_name
)
log.info('here it is!')
return event
Run Code Online (Sandbox Code Playgroud)
(我什至尝试显式输入信息s3.download_file而不是从 中获取信息event,但无济于事。日志消息确认它是正确的路径。)
测试事件配置中传递的参数:
...
"s3": …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Spring Data Redis + Jedis 组合连接到 AWS ElastiCache Redis。[Redis 集群已启用,因此它具有集群配置端点,具有 3 个分片 - 每个分片有 1 个主节点 + 2 个副本节点]
我收到读取超时错误。
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
AWS Redis 服务器版本:5.0.3 / 集群模式:已启用 / SSL:已启用 / 身份验证:已启用(通过密码)
库 -- Spring-data-redis : 2.1.6.Release / jedis : 2.9.0
Telnet 适用于 AWS Redis 所有节点和 6379 端口上的集群配置端点。
我单独尝试了Redisson,它连接到AWS Redis,没有任何问题。
因此,Redis 本身没有问题,Spring Data Redis 与 Jedis 结合使用会出现问题。
我的代码看起来像这样 -
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
redisClusterConfiguration.setClusterNodes(listOfRedisNode);
redisClusterConfiguration.setPassword(passwordString);
JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
jedisClientConfiguration.connectTimeout(Duration.ofSeconds(60));
jedisClientConfiguration.useSsl();
jedisClientConfiguration.usePooling();
JedisConnectionFactory jedisConnectionFactory …Run Code Online (Sandbox Code Playgroud) java amazon-web-services jedis spring-data-redis redis-cluster
有人可以向我展示使用 AWS CLI 命令的示例吗aws logs list-tags-log-group?
我可以将它与名称没有斜杠的日志组一起使用(例如fooTestLogGroup),但是当我对名称有正斜杠的任何日志组使用相同的命令时(例如/aws/codebuild/logGroup1,或者/ecs/logGroup2然后我收到此错误
An error occurred (ServiceUnavailableException) when calling the
ListTagsLogGroup operation (reached max retries: 4): The server failed to
fulfill the request. Please try again.
Run Code Online (Sandbox Code Playgroud)
我使用的命令是:
$ aws logs list-tags-log-group --log-group-name fooTestLogGroup
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并查找了AWS CLI 文档,但找不到答案
如果我在AWS中有以下VPC:
10.0.0.0/16,我配置了一个应用程序负载均衡器(内部),AWS 在我选择的子网内为我选择以下 IP 地址 10.0.0.9 和 10.0.0.12。
问题:在负载均衡器的生命周期内,选择的内部地址(10.0.0.9 和 10.0.0.12)是否会发生变化?
我知道如果我删除负载均衡器,它会选择新的。我还了解到互联网应用程序负载均衡器 IP 会定期更改(这就是人们使用网络负载均衡器作为静态 ip 的原因),但关于与负载均衡器关联的私有内部 ip 却没有太多提及。
任何信息都会很棒。
我有以下函数从 aws SQS 获取消息,问题是我一次获取一条消息,并且希望获取所有消息,因为我需要检查每条消息的 ID:
function getSQSMessages() {
const params = {
QueueUrl: 'some url',
};
sqs.receiveMessage(params, (err, data) => {
if(err) {
console.log(err, err.stack)
return(err);
}
return data.Messages;
});
};
function sendMessagesBack() {
return new Promise((resolve, reject) => {
if(Array.isArray(getSQSMessages())) {
resolve(getSQSMessages());
} else {
reject(getSQSMessages());
};
});
};
Run Code Online (Sandbox Code Playgroud)
函数sendMessagesBack()用于另一个 async/await 函数。我不确定如何获取所有消息,因为我正在寻找如何获取它们,人们提到了循环,但我不知道如何在我的情况下实现它。我假设我必须将 sqs.receiveMessage()放入循环中,但随后我对需要检查什么以及何时停止循环以便获取每条消息的 ID 感到困惑?
如果有人有任何提示,请分享。谢谢。
我想知道对 EBS 存储进行加密的缺点。为什么这个选项不是默认选项?我加密了当前的 EBS,一切似乎都工作正常,性能方面我也没有遇到任何减速。
使用 Amplify,我设置了 API Gateway 和 Lambda。API Gateway 已发布 10MB 的有效负载限制,Lambda 已发布 6MB 的有效负载限制。我的请求由 FormData 和其他元数据组成,大小略高于 3MB。
我正在使用 Express 和 http-proxy-middleware 来路由我的请求。
我在 AWS 中有一个运行 Python3.6 (Amazon Linux/2.8.3) 的 ec2 实例,我需要在其中安装 pycurl 和 NSS ssl backend。
pycurl==7.43.0 --global-option="--with-nss"首先,我通过添加到我的文件中进行尝试requirement.txt,但出现错误安装错误。因此,我最终通过添加一个.config文件.ebextensions(在部署期间运行)来完成此操作:
container_commands:
09_pycurl_reinstall:
# the upgrade option is because it will run after PIP installs the requirements.txt file.
# and it needs to be done with the virtual-env activated
command: 'source /opt/python/run/venv/bin/activate && PYCURL_SSL_LIBRARY=nss pip3 install pycurl --global-option="--with-nss" --upgrade --no-cache-dir --compile --ignore-installed'
Run Code Online (Sandbox Code Playgroud)
Pycurl 似乎已正确安装,但 celery 工作程序未运行。芹菜工人日志显示:
__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file …Run Code Online (Sandbox Code Playgroud) amazon-ec2 ×3
aws-lambda ×2
amazon-ecs ×1
amazon-elb ×1
amazon-iam ×1
amazon-s3 ×1
amazon-sqs ×1
aws-cli ×1
aws-ebs ×1
boto3 ×1
java ×1
jedis ×1
libcurl ×1
node.js ×1
pycurl ×1
python ×1
serverless ×1