使用 Pulumi 公开公开 AWS Elasticache Redis 实例失败

问题描述 投票:0回答:1

问题:我正在尝试使用 Pulumi 公开公开 AWS Elasticache Redis 实例。 Redis 设置使用 @pulumi/aws 包,我正在配置有公共子网、互联网网关和用于出站访问的路由表的 VPC 中工作。

我已将安全组附加到 Redis 实例,允许从任何 IP 访问端口 6379。尽管如此,Redis 实例仍然无法从互联网访问。这是相关的 Pulumi 代码:

import * as aws from '@pulumi/aws';
import * as pulumi from '@pulumi/pulumi';

const stackName = pulumi.getStack();

const vpc = new aws.ec2.Vpc(`vpc-${stackName}`, {
  cidrBlock: '10.0.0.0/16',
  enableDnsHostnames: true,
  enableDnsSupport: true,
});

const subnet1 = new aws.ec2.Subnet(`subnet1-${stackName}`, {
  vpcId: vpc.id,
  availabilityZone: 'us-east-1a',
  cidrBlock: '10.0.26.0/24',
  mapPublicIpOnLaunch: true,
});

const igw = new aws.ec2.InternetGateway(`igw-${stackName}`, { vpcId: vpc.id });

const routeTable = new aws.ec2.RouteTable(`routeTable-${stackName}`, {
  vpcId: vpc.id,
  routes: [{ cidrBlock: '0.0.0.0/0', gatewayId: igw.id }],
});

new aws.ec2.RouteTableAssociation(`rta-${stackName}`, {
  subnetId: subnet1.id,
  routeTableId: routeTable.id,
});

export const redisSecurityGroup = new aws.ec2.SecurityGroup(`redis-sg-${stackName}`, {
  vpcId: vpc.id,
  ingress: [{ fromPort: 6379, toPort: 6379, protocol: 'tcp', cidrBlocks: ['0.0.0.0/0'] }],
  egress: [{ fromPort: 0, toPort: 0, protocol: '-1', cidrBlocks: ['0.0.0.0/0'] }],
});

export const redisCache = new aws.elasticache.ServerlessCache(`redisCache-${stackName}`, {
  engine: 'redis',
  name: `redis-${stackName}`,
  securityGroupIds: [redisSecurityGroup.id],
  subnetIds: [subnet1.id],
  userGroupId: '<YOUR_USER_GROUP_ID>',
});

我尝试了以下方法但没有成功:

已验证子网上的 mapPublicIpOnLaunch 设置为 true。 配置安全组以允许端口 6379 上的所有入口/出口。 确保互联网网关存在用于传出连接的公共路由。 我是否缺少特定的配置步骤来使 Redis 可通过互联网访问?

环境:

Pulumi 版本:

"@pulumi/aws": "^6.56.1",
"@pulumi/awsx": "^2.16.1",
"@pulumi/esc-sdk": "^0.10.2",
"@pulumi/pulumi": "^3.137.0",

AWS Elasticache 版本:Redis 7.1 Node.js:22

amazon-web-services redis pulumi pulumi-typescript
1个回答
0
投票

AWS ElastiCache 实例从未分配公共 IP。 Amazon 做出的设计决定是 ElastiCache 实例永远无法通过 Internet 直接访问。

根据 ElastiCache 文档,Amazon 建议创建一个 NAT 实例以将流量路由到 ElastiCache。

© www.soinside.com 2019 - 2024. All rights reserved.