我的 IAM 用户收到此错误
User: arn:aws:iam::123456789:user/admin is not authorized to perform:
ecr:CreateRepository on resource: *
Run Code Online (Sandbox Code Playgroud)
当我尝试创建存储库时。
我已经授予AmazonEC2ContainerServiceFullAccess该用户所属的组。我在“附加策略”中搜索存储库,但没有匹配项。如何授予该用户权限?
第1部分
应该getent是可执行文件吗?
在我的 zsh 设置中,我可以看到 getent 实际上被定义为一个函数
$ which getent
getent () {
if [[ $2 = <-> ]]
then
grep ":$2:[^:]*$" /etc/$1
else
grep "^$2:" /etc/$1
fi
}
Run Code Online (Sandbox Code Playgroud)
如果我想从 bash shell 执行它,
bash -c "getent passwd user"
Run Code Online (Sandbox Code Playgroud)
我收到一个getent: command not found错误。
第2部分
在 Mac OSX 中,getent无论用户 ID 是否有效,都会失败。事实证明用户 ID 没有保存在/etc/passwd文件中。为什么会这样呢?还有什么替代方案呢?
我已经在谷歌云平台成功设置了负载均衡器
如果我使用如图所示的 IP,我可以测试并验证设置是否按我的计划工作。
现在我想将域名映射到 IP。我想用www.mycompany.com. 我已经创造了一个A纪录,我的DNS指向www到1.2.3.4。但是域名给出了 404 错误。
我确定我需要将这个新域名与 IP 地址相关联。
没有明显的地方可以在load balanceing或external IP addresses屏幕上进行。
我可以在哪里做?
这是我的 Dockerfile
FROM ubuntu:16.04
RUN apt-get update -y && apt-get install -y \
git \
python \
python-pip
Run Code Online (Sandbox Code Playgroud)
创建 docker 映像后,我登录并尝试设置用于测试的 cron 作业。令我惊讶的是,cron并crontab没有出现。
# ls
app bin boot dev etc home lib lib64 media mnt opt proc
root run sbin srv sys tmp usr var
# crontab -l
/bin/sh: 6: crontab: not found
# crontab -l
/bin/sh: 7: crontab: not found
# crontab -l
/bin/sh: 10: crontab: not found
# cron
/bin/sh: 11: cron: not found …Run Code Online (Sandbox Code Playgroud) 这是我从这个 repo 中提取的 terraform 脚本
provider "aws" {
region = "${var.aws_region}"
profile = "${var.aws_profile}"
}
##----------------------------
# Get VPC Variables
##----------------------------
#-- Get VPC ID
data "aws_vpc" "selected" {
tags = {
Name = "${var.name_tag}"
}
}
#-- Get Public Subnet List
data "aws_subnet_ids" "selected" {
vpc_id = "${data.aws_vpc.selected.id}"
tags = {
Tier = "public"
}
}
#--- Gets Security group with tag specified by var.name_tag
data "aws_security_group" "selected" {
tags = {
Name = "${var.name_tag}*"
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个旧的 AMI,它曾经在 c4.large 机器上运行。
由于此类不适用于所有可用区,因此我选择了 c5.large 来将图像恢复到其中。
但是,当我运行 terraform 进行恢复时,我收到以下错误消息:
发生 1 个错误:
aws_instance.convertor:发生 1 个错误:
aws_instance.convertor:启动源实例时出错:InvalidParameterCombination:“c5.large”实例类型需要使用弹性网络适配器 (ENA) 进行增强联网。确保您使用的是为 ENA 启用的 AMI。状态代码:400,请求 ID:7f32e7a1-c201-4db3-9f9e-6da4657ba9c8
我如何找到哪种实例类型可以接受这个旧的 AMI?或者我可以向 AMI 应用什么来使用较新的实例类型吗?
CMD我的 dockerfile 是这样的:["python", "myproject/start_slide_server.py"]
但是,为了使其工作,我需要将其设置PYTHONPATH为/app,它是myproject
如果我启动 docker 进程并覆盖CMD,bash我可以运行以下命令
root@42e8998a8ff7:/app# export PYTHONPATH=.
root@42e8998a8ff7:/app# python myproject/start_slide_server.py
* Running on http://0.0.0.0:8090/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 236-035-556
Run Code Online (Sandbox Code Playgroud)
它按预期工作
现在我添加一行
RUN export PYTHONPATH=/app
Run Code Online (Sandbox Code Playgroud)
前
CMD ["python" , "myproject/start_slide_server.py"]
Run Code Online (Sandbox Code Playgroud)
它刚刚失败了
Traceback (most recent call last):
File "/app/myproject/start_slide_server.py", line 23, in <module>
from myproject import env
ImportError: No module named myproject
Run Code Online (Sandbox Code Playgroud)
看起来这RUN条线根本没有任何影响
我真的不想 …
我希望能够找出正在运行并标记有特定值的 ec2 机器。
我使用了以下命令:
aws ec2 describe-instances --filter Name=tag:Name,Values=worker1 \
--filter Name=instance-state-name,Values=running
Run Code Online (Sandbox Code Playgroud)
它基本上返回 ec2 机器的所有正在运行的实例。
如何使 aws cli 将过滤器视为条件组合?即仅名为“worker1”的活动机器
我应用了 Terraform 来创建 Redis 集群。
进行到一半时,应用程序失败并显示以下错误消息:
Error: Error waiting for elasticache replication group (my-project) to be created: SerializationError: failed decoding Query response
status code: 200, request id: 3d5a5394-20f0-4834-9e2a-9aff20cceecf
caused by: read tcp 192.168.86.116:53912->54.222.5.156:443: read: connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我知道我已经成功创建了集群,因为我可以使用redis-cli.
但是如果我再做terraform apply一次,terraform 会说
module.my_project.aws_elasticache_replication_group.main[0] is tainted, so must be replaced
Run Code Online (Sandbox Code Playgroud)
它试图销毁并重新创建资源,而不是像no action我预期的那样。
我尝试将资源导入到状态文件中以纠正该问题。但是 terraform 会抛出错误:
错误:资源已由 Terraform 管理
如果操作一开始就成功,我就不会看到tainted错误消息。
有什么办法可以解决这个问题吗?我想避免删除然后重新创建资源。
理想情况下,我希望能够清除状态文件中的资源,这样 terraform 就不会尝试破坏新创建的集群。
docker ×2
terraform ×2
amazon-ec2 ×1
amazon-ecr ×1
amazon-iam ×1
amazon-s3 ×1
aws-cli ×1
bash ×1
cron ×1
domain-name ×1
mac-osx ×1
passwd ×1
python ×1
redis ×1
subdomain ×1
zsh ×1