简体   繁体   English

AWS copilot 部署的服务不可访问?

[英]AWS copilot deployed service is not accessible?

I have a simple backend srevice that I just deployed with copilot.我有一个简单的后端服务,我刚刚使用 copilot 部署。 However, I don't know where to access it?但是,我不知道在哪里访问它?

According to AWS console it's running and active.根据 AWS 控制台,它正在运行且处于活动状态。 I can even see it in the logs that it has been started.我什至可以在它已经启动的日志中看到它。

My manifest:我的清单:

# The manifest for the "user-service" service.
# Read the full specification for the "Backend Service" type at:
#  https://aws.github.io/copilot-cli/docs/manifest/backend-service/

# Your service name will be used in naming your resources like log groups, ECS services, etc.
name: user-service
type: Backend Service

# Your service does not allow any traffic.

# Configuration for your containers and service.
image:
  # Docker build arguments. For additional overrides: https://aws.github.io/copilot-cli/docs/manifest/backend-service/#image-build
  build: ./Dockerfile
  port: 9000

cpu: 256       # Number of CPU units for the task.
memory: 512    # Amount of memory in MiB used by the task.
count: 1       # Number of tasks that should be running in your service.

# Optional fields for more advanced use-cases.
#
variables:                    # Pass environment variables as key value pairs.
  SERVER_PORT: 9000
  NODE_ENV: test
  
secrets:                      # Pass secrets from AWS Systems Manager (SSM) Parameter Store.
  ACCESS_TOKEN_SECRET: ACCESS_TOKEN_SECRET
  REFRESH_TOKEN_SECRET: REFRESH_TOKEN_SECRET
  MONGODB_URL: MONGODB_URL

# You can override any of the values defined above by environment.
environments:
  test:
    variables:
      NODE_ENV: test
#    count: 2               # Number of tasks to run for the "test" environment.

My Dockerfile我的 Dockerfile

# Check out https://hub.docker.com/_/node to select a new base image
FROM node:lts-buster-slim

# Set to a non-root built-in user `node`
USER node

# Create app directory (with user `node`)
RUN mkdir -p /home/node/app

WORKDIR /home/node/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY --chown=node package*.json ./

RUN npm install

# Bundle app source code
COPY --chown=node . .

RUN npm run build

# Bind to all network interfaces so that it can be mapped to the host OS
ENV HOST=0.0.0.0 PORT=3000

EXPOSE 9000
CMD [ "node", "." ]

This works fine locally, with docker-compose.这在本地运行良好,使用 docker-compose。 But where can I find the URL of the deployed service?但是在哪里可以找到已部署服务的 URL 呢? I checked ECS console and the task has a public IP.我检查了 ECS 控制台,任务有一个公共 IP。 However I can't connect to that.但是我无法连接到那个。

What's missing here?这里缺少什么?

Nm.. my bad. Nm ..我的坏。 Backend services are not supposed to be reachable via internet.后端服务不应该通过互联网访问。 They expose endpoints but should talk to each other (or the frontend) via service discovery.它们暴露端点,但应该通过服务发现相互(或前端)通信。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM